求助C语言 删除文本文件内的指定字符串
答案:4 悬赏:0 手机版
解决时间 2021-01-06 14:35
- 提问者网友:你给我的爱
- 2021-01-06 04:09
求助C语言 删除文本文件内的指定字符串
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-01-06 04:24
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");
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");
全部回答
- 1楼网友:举杯邀酒敬孤独
- 2021-01-06 07:23
如果你之前用结构体就好办多了~~追问因为这个只是用来存文件名的,所以没有必要用结构体吧?
- 2楼网友:未来江山和你
- 2021-01-06 06:06
共享你的程序代码,趁现在有时间,我帮你改
- 3楼网友:由着我着迷
- 2021-01-06 05:43
#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;
}
#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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯