几个函数存在问题,价格可以私聊。
18条回答 默认 最新
- 在黎明的反思 2020-12-25 02:42关注
void xiugai()
{
int i,j,n,c,num;
char name[50]={},cc[1000]={};
FILE *fp;
fp=fopen("D:\\DATA\\data.txt","w+"); //首先这个w+打开方式,会清空文件内容
if(NULL==fp)
{
printf("文件打开失败!\n");
return;
}
int N=0;
while(!feof(fp))
{
fread(&per[N],sizeof(person),1,fp); // 这里读取的数据是空的,因为w+方式打开时已经清空了里面内容,这里读取一次就结束了N==1最后
N++;
}
printf("请输入你要修改信息的校友姓名:");
gets(name);
getchar();
for(i=0;i<N;i++) //N=1
{
if(strcmp(name,per[i].name)==0)
num=i; //除非你名称输入空否则不会进入这里,这的num前面没有初始化是个异常值,
}
printf("请输入你要修改哪一项信息:\n1.入校年份\n2.在校身份\n3.所在系别\n4.研究领域\n5.简介\n6.成就1\n7.成就2\n8.成就3\n");
getchar();
scanf("%d",&n);
printf("请输入修改后的信息内容:");
fflush(stdin);
switch(n)
{
case 1:{ scanf("%d",&per[num].nianfen); break;} //这里修改的per[num],由于num是个异常,不知道修改的是第几个,很大很大可能不是per[0]
case 2:{ gets(cc); strcpy(per[num].positon,cc); break;}
case 3:{ gets(cc); strcpy(per[num].yuanxi,cc); break;}
case 4:{ gets(cc); strcpy(per[num].lingyu,cc); break;}
case 5:{ gets(cc); strcpy(per[num].jianjie,cc); break;}
case 6:{ gets(cc); strcpy(per[num].chengjiu1,cc); break;}
case 7:{ gets(cc); strcpy(per[num].chengjiu2,cc); break;}
case 8:{ gets(cc); strcpy(per[num].chengjiu3,cc); break;}
}
for(i=0;i<N;i++)
if(fwrite(&per[i],sizeof(person),1,fp)!=1) //这里写入的就是空的数据per[0],N==1,所以写完数据为空。
printf("写入失败!");
fclose(fp);
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用 1