void studel()//删除
{
char name[10];
int flag;
char ch;
FILE *fp1,*fp2;//声明两个文件指针fp1,fp2
do
{
if((fp1 = fopen("student.txt","rb")) == NULL)
{
printf("\n不能打开student.txt文件");
getchar();
exit(1);
}
if((fp2 = fopen("temp1.txt","wb")) == NULL)
{
printf("\n不能打开student.txt文件");
getchar();
exit(1);
}
printf("请输入要删除的人员:");
fflush(stdin);//清除缓存
gets(name);
flag = 0;
while(!feof(fp1))//判断文件fp1是否指向文件末尾
{
fread(&stu,sizeof(stu),1,fp1);
if(strcmp(name,stu.borrowid) == 0)
{
flag = 1;
}
else
{
fwrite(&stu,sizeof(stu),1,fp2);//将数据作为一个整体一次性写入磁盘文件
}
}
fclose(fp1);//关闭文件
fclose(fp2);//关闭文件
是不是你学生信息文件中本来就有两条重复数据呢?代码看不出会产生重复数据啊
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632