【问题标题】:How to remove specific line in text file using C programming language [closed]如何使用 C 编程语言删除文本文件中的特定行 [关闭]
【发布时间】:2016-08-31 05:50:22
【问题描述】:

我想在搜索后删除文本文件中的那一行:

例如:

char *id;   //id to search
char buf[1024];

FILE *fp=fopen("abc.txt","r");

while (fgets(buf,sizeof(buf),fp)!=NULL)
{
   if(strstr(buf,id)!=NULL)

       {printf("%s\n",buf); }

}

【问题讨论】:

  • 为什么要删除 that 文件本身?为什么你不能用你需要的行创建一个新文件?
  • This 可能对您的情况有用。
  • 您的代码看起来几乎没有问题。它出什么问题了?它没有做你想做的事吗?

标签: c file delete-row


【解决方案1】:

根据文件的大小,基本上有两种解决方案:

  1. 对于中等大小的文件,您可以将整个文件读入内存。重新创建文件并将其写出,但要删除的行除外。

  2. 从原始文件中逐行读取。将除要删除的行之外的所有行写入新的临时文件。将临时文件重命名为原始文件。文件大小在这里无关紧要(速度除外)。

方法 1 有一个很大的缺点:如果出现错误(代码中的错误、系统崩溃或其他问题),内容可能不会全部写入,您可能会丢失数据。方法 1 通常更快,它允许您以简单的方式对数据进行多种转换。

【讨论】:

    猜你喜欢
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多