删除文件指针指向的行的内容

时间:2011-03-16 02:12:22

标签: c file

我的文件指针指向一行的结尾。我想删除该行的所有内容,我该怎么做?

我可能需要将文件指针移动到行的开头,然后删除内容。

3 个答案:

答案 0 :(得分:2)

您只能从文件末尾删除。要从文件中间删除数据,通常需要复制后续数据以掩盖差距(或者,通常更容易制作文件的新副本,跳过要删除的部分)。

如果你需要经常做这样的事情,你可能想要创建某种索引文件,这样你就可以从索引中删除 - 或者,当然,使用数据库来为你处理它

答案 1 :(得分:1)

您无法从文件中“删除”任何内容。在C语言中,文件是通过流访问的,并且流不支持诸如“删除行”或“删除”任何内容之类的操作。你可以删除整个文件,但这显然不是你需要的。

在C语言处理文件的方法中,您所能做的就是将原始文件复制到另一个文件,跳过相关的行。第二个文件看起来就像删除了一行的原始文件。完成后,您可以销毁原始文件并使用新文件。

你有可能通过“删除”来表示别的东西(你的“删除”是什么意思,BTW?)。例如,您可能希望用空格字符覆盖该行的内容。如果是这样,只需将当前文件指针移动到行的开头,并将适当数量的空格字符写入文件。

答案 2 :(得分:0)

您必须将线外的所有内容移回到要删除的行开始的位置。

如果您在支持它的环境中工作,您可以mmap(2)该文件,在内存中使用整个内容并使用memmove(3)进行转换。