C语言中没有直接获取文件长度的接口,但是我们可以使用标准库提供的函数来间接的获取文件长度。这里提供两种方法。
使用C标准库获取文件长度
不论你使用的是哪个操作系统,只要该操作系统支持C标准库,那么就可以通过下述代码获取文件长度:
#include/** * @brief 获取文件长度 * * @param file_name 文件名(包含路径) * * @return -1:获取文件长度失败 其他值:文件长度 * * @version * 1, 2023-08-09, AilsonJack, Created function */ long get_file_len(const char *file_name) { FILE *filep; long len; // 打开文件 filep = fopen(file_name, "rb"); if (filep == NULL) { printf("fopen %s failed! ", file_name); return -1; } // 移动文件指针到文件末尾 fseek(filep, 0, SEEK_END); // 获取文件长度 len = ftell(filep); // 关闭文件 fclose(filep); return len; }
使用C标准库获取文件长度的测试结果如下图所示:
Snipaste_2023-09-23_10-00-18
使用Linux的系统调用获取文件长度
在Linux操作系统下,可以使用stat函数来获取文件信息,其中st_size字段表示文件的长度,代码如下所示:
#include#include /** * @brief 获取文件长度 * * @param file_name 文件名(包含路径) * * @return -1:获取文件长度失败 其他值:文件长度 * * @version * 1, 2023-08-09, AilsonJack, Created function */ long get_file_len(const char *file_name) { struct stat st; // 获取文件信息 if (stat(file_name, &st) == -1) { perror("无法获取文件信息"); return -1; } // 检查文件类型 if (!S_ISREG(st.st_mode)) { printf("%s 不是一个常规文件! ", file_name); return -1; } return st.st_size; }
全部0条评论
快来发表一下你的评论吧 !