以下是引用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编辑过]