怎么对c语言中文本文件进行删除特定的字符串,并且将删除后的文件重新保存在新的文本中
一个实现,供参考:
#include <stdio.h>
int main(void){
FILE * oldfile = fopen("f:\\问题.txt","r");
if(oldfile==NULL){
printf("原文件打开失败,可能是文件名错误或者路径错误!\n");
return 0;
}
FILE * newfile = fopen("f:\\新文件.txt","w+");
if(newfile==NULL){
printf("新文件创建,可能是权限不足!\n");
return 0;
}
char temp[256]; //存放对比字符串的数组
char * deletestr = "什么"; //要删除的字符串
char ch;
int ti = 0;
//获取删除字符串的长度
int length ;
for(length=0;deletestr[length]!='\0';length++)
continue;
ch = fgetc(oldfile); //从原文件读入一个字符
while(ch!=EOF){
if(ch==deletestr[ti]){ //如果读取的字符和删除字符串的某个字符匹配则执行完全匹配操作
while(ch==deletestr[ti]&&ch!=EOF){
temp[ti] = ch;
ti++;
ch = fgetc(oldfile);
}
temp[ti]='\0';
if(ti<length){ //如果未完全匹配,则把这串不匹配的字符串写入新文件,如果匹配则不写入新文件
fprintf(newfile,"%s",temp);
// printf("temp=%s\n",temp);
}
if(ch!=EOF){ //如果最后一个读取的字符不是文件结束符则写入新文件
fprintf(newfile,"%c",ch);
}
ti=0;
}else{ //如果从原文件读取的字符和要删除的字符串的某一位不匹配,则写入新文件
fprintf(newfile,"%c",ch);
// printf("ch=%c\n",ch);
}
ch = fgetc(oldfile); //从原文件读取下一个字符
}
fclose(oldfile);
fclose(newfile);
return 0;
}