0

我正在尝试写入 student.dat 文件。我的问题是当我第二次写入时,我的第一个数据正在清除。请帮助我

student st; 
FILE* fp = fopen("d:\\student.dat", "w");
//fseek(fp,0,SEEK_SET);   
st.getdata();      
fwrite((char *) &st,sizeof(student),1,fp);
fclose(fp);
printf("\n\nStudent record Has Been Created ");
fflush(stdin);   
getch();
4

2 回答 2

5

尝试附加模式:

FILE* fp = fopen("d:\\student.dat", "a");

wmode overwrites file:“为输出操作创建一个空文件。如果已经存在同名文件,则丢弃其内容,并将该文件视为新的空文件。”

于 2013-07-17T13:23:41.967 回答
2

http://www.cplusplus.com/reference/cstdio/fopen/

FILE* fp = fopen("d:\\student.dat", "w");

应该

FILE* fp = fopen("d:\\student.dat", "a"); // a for append
于 2013-07-17T13:23:52.197 回答