永发信息网

求助C语言 删除文本文件内的指定字符串

答案:4  悬赏:0  手机版
解决时间 2021-01-06 14:35
求助C语言 删除文本文件内的指定字符串
最佳答案
1.打开一个tmp.txt的文件保存结果文件
FILE* out=fopen("tmp.txt","w");
FILE* in=fopen("原文件.txt","r");

循环采用fgets从in中读入字符串,fgets可以指定读入的最大字符串长度,因此可以一部分一部分地读,处理到文件结束为止
然后,因为你是要对完整的单词进行处理,所以fgets完之后再继续fgetc一个一个的字母,直到读到一个','再结束,这样就可以在内存中读到一部分的完整单词

2.关键代码:

char str[1000]; //开个1000长度的字符串数组
int len;
while (fgets(str,900,in)!=null) //读900个,留点空间后面可以读入直完整单词
{
len=strlen(str);
if (str[len-1]=='
') 
{
str[len-1]=''; //fgets还有个特点,碰到回车会结束,所以如果碰到回车,就会把结尾的回车也读进去,要去掉
len--;
}
while (str[len-1]!=',') //把最后的单词读完整
{
str[len]=fgetc(in);
if (str[len]==eof) break;
len++;
}
str[len]='';
//接下来对str中的单词进行处理啦,这里自己写,逐个地读,判断是不是要删除的那个,不是的话,就写入out文件中
}
//最后,删除原文件,把tmp.txt代替原文件
fclose(in);
fclose(out);
remove("原文件.txt");
rename("tmp.txt","原文件.txt");
全部回答
如果你之前用结构体就好办多了~~追问因为这个只是用来存文件名的,所以没有必要用结构体吧?
共享你的程序代码,趁现在有时间,我帮你改
#include 
#include 
int main() {
char infilename[] = "indata.txt";
char outfilename[] = "outdata.txt";
char str[81]; // 假定每个文件名不超过80个字符
char s[81];
FILE *fin,*fout;
fin = fopen(infilename,"rt");
fout = fopen(outfilename,"wt");
if(fin == NULL || fout == NULL) {
printf("不能打开文件。 ");
return 1;
}
printf("待删除的字符串:");
gets(str);
while(fgets(s,81,fin))
if(strcmp(str,s)) fprintf(fout,"%s",s);
fclose(fin);
fclose(fout);
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
陈香檀这个名字怎么样
09款的2.5最高配天籁开了6w多公里9.6万值不值
哪家能做定制衣柜呢?
房子建的南宽北窄中间相差八公分请问有没有安
春风夏雨秋月夜,对下联
损失近2000块的东西,要报警吗?
黑尤江省省会是哪里?
一般的卫星与地球同步卫星相比,谁的半径大?
9()760000约等于1亿
你想写好毛笔字,高兴时一练一天头也不抬,不
真三国无双5赵云最强武器装备是什么?
好神餐饮好菜湘(锦城店)的菜荪子炒甜豆好不
苹果712系统怎么样
只有拼出来的努力,没有等出来的辉煌.这句话的
这题第二步是怎么算出来的啊
推荐资讯
英语里的名词动词副词形容词分别是什么意思
接种疫苗要打到多少岁
单选题下列叙述中正确的是A.凡单原子形成的离
黄眉柳莺是什么品种?
远古北京人是怎样得到火的
3个小朋友比年龄大小,林林比阳阳大5岁,芳芳比
请问事业单位凭职称是怎么凭的
求超时要塞god bless you铃木实里mp3
火为什么能烧东西?
小数3.021的意义
—I use your dictionary, Tom? —Of course,
猪心苹果汤的做法
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?