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

发布于 2024-10-13 02:40:33 字数 53 浏览 1 评论 0原文

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

谢谢! 约翰.

I have a text file. How do I go about deleting only the last line in the file using C?

Thanks!
John.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饮湿 2024-10-20 02:40:33

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

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


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

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

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 (using lseek() to obtain the position).


The easiest alternative of all, if you have GNU head, is just to use that:

head -n -1 < file.original > file.new
梦断已成空 2024-10-20 02:40:33

你的方法是正确的。 Sacn 对于换行符,请记住最后一个,然后使用 truncateftruncate。另请参阅如何在 C 中截断文件?

马里奥

You are correct with the approach. Sacn for newlines, remember the last one and then use truncate or ftruncate. see also How to truncate a file in C? .

hth

Mario

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文