如何使用C只删除ASCII文本文件的最后一行?

时间:2011-01-20 04:52:38

标签: c file-handling

我有一个文本文件。如何使用C仅删除文件中的最后一行?

谢谢! 约翰。

2 个答案:

答案 0 :(得分:6)

普通ANSI C没有提供任何减少文件大小的标准方法 - 在标准C中执行此操作的唯一方法是将整个文件内容复制到新文件,但要省略的部分除外

或者,您可以使用特定于操作系统的函数来就地截断文件。例如,POSIX提供ftruncate()函数,该函数将文件缩短到给定长度。您将搜索最后一行的开头,然后在此之前截断文件(使用lseek()获取位置)。


如果您有GNU head,最简单的替代方法就是使用它:

head -n -1 < file.original > file.new

答案 1 :(得分:0)

你的方法是正确的。 Sacn换新行,请记住最后一行,然后使用truncateftruncate。另见How to truncate a file in C?

HTH

马里奥