[英]C - Using file as database
我正在使用VS2013,我的結構如下:
typedef struct StuInformation
{
char studentNumber[100];
char name[50];
char sex[10];
unsigned short age;
char m_status[10];
} student;
我想一一獲得用戶的信息:
student std;
int RecordSize;
printf("pls insert the student number :\n");
scanf_s("%[^\n]",std.studentNumber);
printf("name : \n");
scanf_s("%[^\n]", std.name);
printf("sex : \n");
scanf_s("%[^\n]", std.sex);
printf("major : \n");
scanf_s("%[^\n]", std.major);
printf("age : \n");
scanf_s("%d", &std.age);
FILE *f;
fopen_s(&f, "student.txt", "a");
RecordSize = sizeof(std);
fseek(f, 0, SEEK_END);
fwrite(&std, RecordSize, 1, f);
fclose(f);
但似乎我的scanf_s中存在錯誤s: 訪問沖突執行位置我將其更改為
scanf_s("%[s^\n]", std.email);
因為寫某處的scanf_s必須包含%s ...
還有另一個問題:我如何從文件中讀取特定記錄,並將其存儲為“結構”,然后將其打印輸出給用戶,例如:
printf("student name is : %s ",std.name)
當scanf_s
中的格式字符串包含%s
或%S
,函數需要另一個參數來指示字符串的大小。 請參閱https://msdn.microsoft.com/zh-cn/library/w40768et.aspx 。
代替
scanf_s("%[^\n]",std.studentNumber);
您需要使用:
scanf_s("%[^\n]",std.studentNumber, sizeof(std.studentNumber));
類似的更改需要對函數的其他調用進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.