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

C 删除文件指针指向的行的内容,c,file,C,File,我的文件指针指向一行的末尾。我想删除该行的所有内容,我该怎么做 我可能需要将文件指针移到行的开头,然后删除内容。您不能从文件中“删除”任何内容。在C语言中,文件是通过流访问的,流根本不支持“删除一行”或“删除”任何内容之类的操作。您可以删除整个文件,但这显然不是您需要的 在使用C语言处理文件的方法中,您所能做的就是将原始文件复制到另一个文件中,跳过所讨论的行。第二个文件看起来与原始文件一样,删除了该行。完成此操作后,您可以销毁原始文件并使用新文件 你的“删除”可能意味着其他东西(顺便说一句,你的

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

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

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

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


你的“删除”可能意味着其他东西(顺便说一句,你的“删除”是什么意思?)。例如,您可能希望使用空格字符覆盖行的内容。如果是这样,只需将当前文件指针移到行的开头,并在文件中写入适当数量的空格字符。

您必须将行以外的所有内容移回要删除的行的起始位置


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

您只能从文件末尾删除。要从文件中间删除数据,通常需要复制后续数据以弥补缺口(或者,通常更容易地,创建文件的新副本,跳过要删除的部分)


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

PS:这不是一个家庭作业问题。(在一些“聪明的家伙”评论之前:)谢谢AndreyT。我可以将fp移到该行的开头并用其他内容替换当前内容吗?比方说-空白?有可能吗?谢谢你,杰瑞。所以,我想删除的那一行,我在写的时候就知道了。就在我写它之前,我可以存储fp,然后当我需要删除它时,我会将我的fp查找到该偏移量并做些什么?可能会覆盖我要删除的内容?可能吗?现在就试试。多谢!看来,我没有办法记住那个偏移量。又卡住了!祝我好运-继续战斗!!!