【问题标题】:How to delete only the last line of a ASCII text file using C?如何使用 C 仅删除 ASCII 文本文件的最后一行?
【发布时间】:2011-01-20 04:52:37
【问题描述】:

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

谢谢! 约翰。

【问题讨论】:

  • 你试过什么?和/或你究竟需要什么才能在你的家庭作业中获得满分?
  • 我尝试寻找 EOF,然后遍历到下一个新行字符。哈哈@你暗示这是硬件。谢谢你的关心,但我不是学生。我必须删除文本文件的最后一条记录,因为 Excel 中的导出操作是在末尾添加一个新行字符。

标签: c file-handling


【解决方案1】:

Plain ANSI C 不提供任何减小文件大小的标准方法 - 在标准 C 中执行此操作的唯一方法是将整个文件内容复制到一个新文件中,除了您要省略的部分.

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


如果你有 GNU head,最简单的选择就是使用它:

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

【讨论】:

    【解决方案2】:

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

    马里奥

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多