C语言怎么实现文件中部分数据的删除

我的代码是这样的,创建一个临时文件然后忽略删除部分复制之后再改名,可是之后运行出来显示文件中没有数据是怎么回事?

运行之后再次输出的话就显示文件里面没有数据了,,可是我只删除了一部分
这应该怎么改
求大神。。。
。。刚刚贴的代码有点错误,,请无视掉
可是我改了之后他还是显示修改之后里面没有数据了

删除文件部分内容的大概步骤:新建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名。

例如在原文件123.txt中删除以2和以4编号开头的行,可用以下代码实现:
#include "stdio.h"
#include "stdlib.h"
int main(void){
FILE *fin,*ftp;
char a[1000];
fin=fopen("123.txt","r");//读打开原文件123.txt
ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
if(fin==NULL || ftp==NULL){
printf("Open the file failure...\n");
exit(0);
}
while(fgets(a,1000,fin))//从原文件读取一行
if(a[0]!='2' && a[0]!='4')//检验是要删除的行吗?
fputs(a,ftp);//不是则将这一行写入临时文件tmp.txt
fclose(fin);
fclose(ftp);
remove("123.txt");//删除原文件
rename("tmp.txt","123.txt");//将临时文件名改为原文件名
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答