簡體   English   中英

C-使用文件作為數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM