- 获取文件大小
- 概述
- 语法
- 函数说明
- 返回值
- 示例
利用 fseek() 与 ftell() 函数可以计算出一个文件的大小。fseek() 函数用于设置文件指针 stream 的位置,ftell() 函数用于得到文件位置指针当前位置相对于文件首的偏移字节数。
语法#includeint fseek(FILE *stream, long offset, int whence); long ftell(FILE *stream);
函数说明局限性,该两个函数的输入参数与输出函数分别为 int 和 long,因此最大仅能计算 232 即 4G 文件的大小。
- stream – 指向 FILE 对象的指针
- offset – 相对 whence 的偏移量,以字节为单位(正数或负数)
- whence – 设定从文件的哪里开始偏移。取值为:SEEK_SET(文件开头)、SEEK_CUR(当前位置)、SEEK_END(文件结尾)。
- 如果成功,则该函数返回零,否则返回非零值。
#includeint main(int argc, char const *argv[]) { long size = 0; FILE *fp = fopen("/usr/bin/ls", "r"); fseek(fp, 0, SEEK_END); size = ftell(fp); printf("size: %ldn", size); fclose(fp); return 0; }
- 第 5 行以只读形式打开 /usr/bin/ls 文件
- 第 6 行调用 fseek() 函数并指向文件结尾
- 第 7 行计算当前位置相对于文件首的偏移字节数,即得到文件大小值
- 第 8 行打印文件大小
- 第 9 行在该示例中注释掉了,当打开注释,指向文件开头,可以执行其他文件读写操作
- 第 10 行使用完之后及时关闭文件指针



