Linux
系统有时会在文件尾端截去一些数据以缩短文件。为了截短文件,可以调用 truncate()
函数和 ftruncate()
函数。
#include <unistd.h> #include <sys/types.h> int truncate(const char *path, off_t length); int ftruncate(int fd, off_t length);点击复制复制失败已复制
这两个函数的功能为将路径名 path
或打开的文件描述符 fd
所指定的一个现存文件截短为 length
长度。如果该文件以前的长度大于 length
,则 length
以外的数据就不再能存取;如果该文件以前的长度小于 length
,则对该文件进行扩展,扩展部分将被填写为空字符( '\0'
)。
示例
首先建立测试文件: test.txt
,写入如下内容:
hello world hello world点击复制复制失败已复制
接下来新建 main.c
文件,写入如下内容:
#include <stdio.h> #include <sys/types.h> int main(int argc, const char *argv[]) { off_t offset = 12; if (truncate(argv[1], offset) < 0) { printf("truncate error\n"); return -1; } return 0; }点击复制复制失败已复制
编译测试:
$ gcc main.c $ ./a.out test.txt点击复制复制失败已复制
再次查看 test.txt
文件,就会发现里面的内容变成这样:
hello world 点击复制复制失败已复制
提示
注意原版和修改后的文件有空行的区别!!!