c语言文件操作之删除特定字符串

怎么对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;
    
}