如何使用C编程语言删除文本文件中的特定行

时间:2016-08-31 05:50:23

标签: c file delete-row

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

例如:

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); }

}

1 个答案:

答案 0 :(得分:1)

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

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

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

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