我想在搜索后删除文本文件中的那行:
例如:
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); }
}
答案 0 :(得分:1)
根据文件的大小,基本上有两种解决方案:
对于中等小的文件,您可以将整个文件读入内存。重新创建文件并将其写出,但要删除的行除外。
从原始文件中逐行读取。将除要删除的行以外的所有行写入新的临时文件。将临时文件重命名为原始文件。文件大小在这里无关紧要(速度除外)。
方法1有一个很大的缺点:如果出现错误(代码中出现错误,系统出现故障或其他问题),内容可能无法全部写入,您可能会丢失数据。方法1通常更快,它允许您以简单的方式对数据进行多种转换。