Linux下的C库中是否有可以设置文件长度的函数?在Windows下我知道有一个SetFileLength()函数。 如果没有,缩短文件而不删除和重写文件的最佳方法是什么?
答案 0 :(得分:5)
您可以使用truncate function。
int truncate(const char *path, off_t length);
从手册页:
“truncate()和ftruncate()函数导致由path命名或由fd引用的常规文件被截断为精确长度字节的大小。如果先前文件大于此大小,则额外数据将丢失如果以前的文件较短,则会扩展,扩展部分读为空字节“
答案 1 :(得分: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() 函数导致常规文件命名 通过路径或由fd引用 截断到精确的大小 长度字节。
如果之前的文件较大 比这个大小,额外的数据是 丢失。如果以前的文件是 更短,它是扩展的,而且 扩展部分读取为空字节 ( '\ 0')。