如何使用 C 只删除 ASCII 文本文件的最后一行?
我有一个文本文件。如何使用 C 语言仅删除文件中的最后一行?
谢谢! 约翰.
I have a text file. How do I go about deleting only the last line in the file using C?
Thanks!
John.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
普通 ANSI C 不提供任何标准方法来减小文件大小 - 在标准 C 中执行此操作的唯一方法是将整个文件内容复制到新文件,除了要省略的部分。
或者,您可以使用操作系统特定的函数就地截断文件。例如,POSIX 提供了 ftruncate() 函数,该函数可将文件缩短至给定长度。您将搜索最后一行的开头,然后截断在此之前的文件(使用 lseek() 获取位置)。
如果您有 GNU
head
,最简单的替代方案就是使用它:Plain ANSI C doesn't provide any standard way to decrease the size of a file - the only way to do this in standard C is to copy the entire file contents to a new file, except for the part you want to omit.
Alternatively, you can use OS-specific functions to truncate the file in-place. For example, POSIX provides the
ftruncate()
function, which shortens a file to a given length. You would search for the beginning of the last line, then truncate the file immediately before this (usinglseek()
to obtain the position).The easiest alternative of all, if you have GNU
head
, is just to use that:你的方法是正确的。 Sacn 对于换行符,请记住最后一个,然后使用
truncate
或ftruncate
。另请参阅如何在 C 中截断文件? 。马里奥
You are correct with the approach. Sacn for newlines, remember the last one and then use
truncate
orftruncate
. see also How to truncate a file in C? .hth
Mario