C语言实现删除匹配的某一行文本

该文章介绍了一种通过创建中间缓冲文件buff.txt来实现对文本文件中特定行删除的方法。代码示例展示了如何读取原始文件,查找并跳过包含特定字符串的行,将其他内容写入缓冲文件,然后删除原文件并重命名缓冲文件为原文件名,从而完成删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

在处理文本文件需要对某行文本进行查询、修改、删除操作,本文采用了创建中间缓冲文件buff.txt的思想对这一删除操作进行实现。

二、代码

#include <stdio.h>
#include <string.h>
void ChangeFile( char *FileName, char *KeyStr) {
    FILE* fp1 = fopen(FileName, "r");
    if (fp1 == NULL) {
        printf("打开文件失败!\n");
        return;
    }
    // 创建一个临时文件
    FILE* fp2 = fopen("buff.txt", "a");
    // 给 buff 里面写;
    char strLine[1024] = {0};
    while (!feof(fp1)) {
        fgets(strLine, 1024, fp1);
        char* ans = strstr(strLine, KeyStr);
        if (ans != NULL) {
            continue;
        } else {
            fprintf(fp2, "%s", strLine);
        }
    }
    fclose(fp1);
    fclose(fp2);
    // 删除原来的文件,再将 buff 文件的名称修改为 FileName
    remove(FileName);
    rename("buff.txt", FileName);
}
int main() {
    char *FileName = "/Users/CProjects/Stusys/stusts/1.txt";
    char KeyStr = "2222";
    ChangeFile(FileName, KeyStr);
    return 0;
}

三、效果

比如我们的 1.txt 文本文件以下内容:

fqeasdqecwqe
dfsdfdsfsd
sdfsdfsdfsd
2222fefwefwe
fwefwesdw2222
fewsdcedsf
redscxwescr3334234
3sdfsa
dfsdfdsfsdewfd
c
zs
cwe
fewsdcedsfwe
fewsdcedsfewf
w
xasxcascs

编译运行程序,运行结果如下:

fqeasdqecwqe
dfsdfdsfsd
sdfsdfsdfsd
fewsdcedsf
redscxwescr3334234
3sdfsa
dfsdfdsfsdewfd
c
zs
cwe
fewsdcedsfwe
fewsdcedsfewf
w
xasxcascs

成功地删除了两行:

2222fefwefwe
fwefwesdw2222

四、总结

我们用FILE* fp2 = fopen("buff.txt", "a");这一行代码,创建和打开一个中间缓冲文件,它默认创建在和运行程序同一个文件夹下面。我们自然希望它和原来被修改的文件等价,因此就把它放在和我们要修改的 1.txt同一个目录下。

之后利用:

remove(FileName);
rename("buff.txt", FileName);

两行代码将原来的文件删除以及对缓冲文件进行改名,就达到了修改的预期效果。

全文完,感谢阅读。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值