0

Linux下的C库中是否有可以设置文件长度的函数?在 Windows 下,我知道有一个 SetFileLength() 函数。如果没有,在不删除和重写文件的情况下缩短文件的最佳方法是什么?

4

2 回答 2

5

您可以使用截断功能

int truncate(const char *path, off_t length);

从手册页:

“truncate() 和 ftruncate() 函数导致由 path 命名或由 fd 引用的常规文件被截断为精确长度字节的大小。如果文件先前大于此大小,则额外的数据将丢失。如果以前的文件更短,它被扩展,扩展部分读取为空字节”

于 2008-12-10T23:33:03.003 回答
3
   #include <unistd.h>
   #include <sys/types.h>

   int truncate(const char *path, off_t length);
   int ftruncate(int fd, off_t length);

从它的手册页:

truncate() 和 ftruncate() 函数导致由 path 命名或由 fd 引用的常规文件被截断为精确长度字节的大小。

如果文件以前大于此大小,则多余的数据将丢失。如果文件先前较短,则将其扩展,扩展部分读取为空字节 ('\0')。

于 2008-12-10T23:33:17.853 回答