Seiko(精工SII)艾普凌科ABLIC无源晶振IC电源芯片全系列-亿配芯城-C语言获取文件长度的两种方法
C语言获取文件长度的两种方法
发布日期:2024-01-09 11:29     点击次数:108

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,Seiko(精工SII)艾普凌科ABLIC无源晶振IC电源芯片	SEEK_END);

//获取文件长度
len=ftell(filep);

//关闭文件
fclose(filep);

returnlen;
}

使用C标准库获取文件长度的测试结果如下图所示:

fee54b1c-6743-11ee-939d-92fbcf53809c.png

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;
}
审核编辑:刘清

相关资讯