gpt4 book ai didi

c - 如何在 C 中截断文件?

转载 作者:太空狗 更新时间:2023-10-29 16:19:42 25 4
gpt4 key购买 nike

我正在使用 C 将一些数据写入文件。我想删除文件中以前写的文本,以防它比我现在写的更长。我想减小文件的大小或截断到最后。我该怎么做?

最佳答案

如果您想将文件的先前内容保留到一定长度(长度大于零,其他答案提供),则 POSIX 提供 truncate()ftruncate()工作的职能。

#include <unistd.h>
int ftruncate(int fildes, off_t length);
int truncate(const char *path, off_t length);

名称表明主要用途 - 缩短文件。但是,如果指定的长度比以前的长度长,则文件会增长(零填充)到新的大小。请注意,ftruncate() 适用于文件描述符,而不是 FILE *;你可以使用:

if (ftruncate(fileno(fp), new_length) != 0) ...error handling...

但是,您应该意识到混合文件流 (FILE *) 和文件描述符 (int) 访问单个文件很容易导致混淆 — 请参阅一些问题的评论。这应该是最后的手段。

不过,对于您的目的而言,打开时截断可能是您所需要的全部,为此,其他人提供的选项就足够了。


对于 Windows,有一个函数 SetEndOfFile()和相关功能SetFileValidData()功能可以完成类似的工作,但使用不同的界面。基本上,您会找到要设置文件结尾的位置,然后调用该函数。

还有一个函数 _chsize() 记录在 answer 中通过 sofr .

关于c - 如何在 C 中截断文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/873454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com