以下是引用TonyDeng在2015-12-12 22:23:37的发言:
是的,丢失数据,大虫。
是的,丢失数据,大虫。
原来的:
if((fp=fopen(DATA_FILENAME,"w+"))!=NULL)
修改后:
if((fp=fopen(DATA_FILENAME,"a"))!=NULL)
这样改了以后,数据丢失的问题测试的时候表面上看是解决了,不知道是不是真的解决……
/***************************文件导出***************************/ void Save(struct Personnel stu[],int Max) { int i; FILE*fp; if((fp=fopen(DATA_FILENAME,"a"))!=NULL) { for(i=0;i<Max;i++) fprintf(fp,"%s\t%s\t%d\t%s\t%s\n",stu[i].name, stu[i].sex, stu[i].age, stu[i].IDcard, stu[i].profile); fclose(fp); } else printf("cannot open files!\n"); } /***************************文件导入***************************/ int Read(struct Personnel stu[]) { printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃ ┃\n"); printf("\t┃ **********★☆欢迎使用人员信息管理系统☆★********** ┃\n"); printf("\t┃ ┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("\t┃ 文件导入 ┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); int i; int result=-1; FILE *fp; if((fp=fopen(DATA_FILENAME,"r"))!=NULL) { for(i=0;!feof(fp);i++) { fscanf(fp,"%s\t%s\t%d\t%s\t%s\n",stu[i].name, stu[i].sex, &stu[i].age, stu[i].IDcard, stu[i].profile); } result=i; fclose(fp); } else { printf("\t\t\t打开文件失败!\n"); printf("\t\t\t*************\n"); printf("\t\t\t请按任意键返回主菜单……"); getch(); } return result; }
[此贴子已经被作者于2020-3-23 13:37编辑过]
/***************************文件导出***************************/ void Save(struct Personnel stu[],int Max) { int i; FILE*fp; if((fp=fopen(DATA_FILENAME,"a"))!=NULL) { for(i=0;i<Max;i++) fprintf(fp,"%s\t|%s\t|%d\t|%s\t|%s\n",stu[i].name, stu[i].sex, stu[i].age, stu[i].IDcard, stu[i].profile); fclose(fp); } else printf("cannot open files!\n"); }
[此贴子已经被作者于2020-3-23 13:11编辑过]