时间:2023-10-10 16:15
人气:
作者:admin
C语言中没有直接获取文件长度的接口,但是我们可以使用标准库提供的函数来间接的获取文件长度。这里提供两种方法。
使用C标准库获取文件长度
不论你使用的是哪个操作系统,只要该操作系统支持C标准库,那么就可以通过下述代码获取文件长度:
#include/** *@brief获取文件长度 * *@paramfile_name文件名(包含路径) * *@return-1:获取文件长度失败其他值:文件长度 * *@version *1,2023-08-09,AilsonJack,Createdfunction */ longget_file_len(constchar*file_name) { FILE*filep; longlen; //打开文件 filep=fopen(file_name,"rb"); if(filep==NULL) { printf("fopen%sfailed! ",file_name); return-1; } //移动文件指针到文件末尾 fseek(filep,0,SEEK_END); //获取文件长度 len=ftell(filep); //关闭文件 fclose(filep); returnlen; }
使用C标准库获取文件长度的测试结果如下图所示:

Snipaste_2023-09-23_10-00-18
使用Linux的系统调用获取文件长度
在Linux操作系统下,可以使用stat函数来获取文件信息,其中st_size字段表示文件的长度,代码如下所示:
#include#include /** *@brief获取文件长度 * *@paramfile_name文件名(包含路径) * *@return-1:获取文件长度失败其他值:文件长度 * *@version *1,2023-08-09,AilsonJack,Createdfunction */ longget_file_len(constchar*file_name) { structstatst; //获取文件信息 if(stat(file_name,&st)==-1) { perror("无法获取文件信息"); return-1; } //检查文件类型 if(!S_ISREG(st.st_mode)) { printf("%s不是一个常规文件! ",file_name); return-1; } returnst.st_size; }
下一篇:FreeRTOS内存管理实现