用新文件覆盖旧文件后,文本里面的数据会出现重复现象

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);//关闭文件
 
		if(flag == 1)
		{
			remove("student.txt");//移除文件
			rename("temp1.txt","student.txt");
			printf("删除成功!\n");
		}
		else
		{
			printf("找不到图书名");
			remove("temp1.txt");//移除文件
		}
		printf("继续删除其他图书名吗?(y/n)");
		fflush(stdin);//清除缓存
		ch = getchar();
		getchar();
	}while(ch == 'y' || ch == 'Y');
	fflush(stdin);//清除缓存
}

用新文件覆盖旧文件后,文本里面的数据会出现重复现象

在34行的前面写一个打印语句,把stu的值打印出来看看。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员【8折】购 ,仅需→¥23.2,即可享受5次/月 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m