0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言获取文件长度的两种方法

嵌入式那些事 来源:嵌入式那些事 2023-10-10 16:15 次阅读

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标准库获取文件长度的测试结果如下图所示:

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;
}






审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136115
  • Linux操作系统

    关注

    0

    文章

    54

    浏览量

    11027

原文标题:C语言-获取文件长度

文章出处:【微信号:嵌入式那些事,微信公众号:嵌入式那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux端口的开启的两种方法需要掌握

    Linux端口的开启的两种方法需要掌握
    发表于 11-28 10:05 1208次阅读

    STM32操作矩阵键盘的两种方法

    目录STM32操作矩阵键盘的两种方法——扫描和中断一、矩阵键盘的结构和原理二、扫描式矩阵键盘的原理和实现三、中断式矩阵键盘的原理和实现四、两种方案优劣STM32操作矩阵键盘的两种方法——扫描和中断
    发表于 08-12 06:33

    关断检流放大器的两种方法

    摘要:本应用笔记介绍了两种关断高边电流检测器的方法两种方法都可以在下一代便携式多媒体设备中用于电源管理。从而使系统在保证用户功能需求的前提下有效延长电池的使
    发表于 05-07 08:48 23次下载

    AODV协议中解决断链问题的两种方法

    AODV协议中解决断链问题的两种方法 2.1 备用路由方法由于常规路由协议维护完整的路由表,能得知网络中的拓扑情况,很容易
    发表于 03-01 17:31 1116次阅读
    AODV协议中解决断链问题的<b class='flag-5'>两种方法</b>

    使用jdbc连接上oracle的两种方法

    本文主要介绍了使用jdbc连接上oracle的两种方法:1、 使用thin连接,2、 使用oci连接(Oracle Call Interface)
    发表于 02-06 10:43 1699次阅读

    单片机C语言编程中定时器初值计算的两种方法

    单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此总结了以下几种方法
    的头像 发表于 12-30 16:59 1.1w次阅读

    51单片机的两种方法点亮LED的C语言程序免费下载

    本文档的主要内容详细介绍的是使用51单片机的两种方法总线操作和位操作点亮LED的C语言程序免费下载。
    发表于 08-19 17:31 1次下载
    51单片机的<b class='flag-5'>两种方法</b>点亮LED的<b class='flag-5'>C</b><b class='flag-5'>语言</b>程序免费下载

    提升家里网速的两种方法

    总是嫌家里的网速慢,看视频“转圈圈”,玩游戏“时延高”,如何提升家里的网速呢?这里介绍两种方法
    的头像 发表于 02-19 21:10 1.4w次阅读
    提升家里网速的<b class='flag-5'>两种方法</b>

    C语言访问MCU寄存器的两种方式

    单片机的特殊功能寄存器SFR,是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有两种方法
    发表于 04-11 06:01 10次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>访问MCU寄存器的<b class='flag-5'>两种</b>方式

    51单片机控制NandFlash读写的两种方法

    51单片机控制NandFlash读写的两种方法(c语言嵌入式开发视频)-该文档为51单片机控制NandFlash读写的两种方法总结文档,是一份很不错的参考资料,具有较高参考价值,感兴趣
    发表于 07-30 17:01 22次下载
    51单片机控制NandFlash读写的<b class='flag-5'>两种方法</b>

    STM32操作矩阵键盘的两种方法——扫描和中断

    目录STM32操作矩阵键盘的两种方法——扫描和中断一、矩阵键盘的结构和原理二、扫描式矩阵键盘的原理和实现三、中断式矩阵键盘的原理和实现四、两种方案优劣STM32操作矩阵键盘的两种方法——扫描和中断
    发表于 11-26 13:36 36次下载
    STM32操作矩阵键盘的<b class='flag-5'>两种方法</b>——扫描和中断

    【Linux + C语言C语言获取文件大小的方法都在这

    【Linux + C语言C语言获取文件大小的方法
    的头像 发表于 08-31 12:49 3429次阅读
    【Linux + <b class='flag-5'>C</b><b class='flag-5'>语言</b>】<b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>获取</b><b class='flag-5'>文件</b>大小的<b class='flag-5'>方法</b>都在这

    LDO在IoT中省电的两种方法

    LDO在IoT中省电的两种方法
    发表于 11-04 09:50 0次下载
    LDO在IoT中省电的<b class='flag-5'>两种方法</b>

    简述安装打印机驱动的两种方法

    安装打印机驱动通常有两种方法,一种是直接使用驱动文件自带的安装程序自动安装,而另一种方法就是我们自己手动进行安装。两种方法各有利弊,日常工作中可以根据实际情况来选择使用哪
    的头像 发表于 04-04 09:46 4638次阅读
    简述安装打印机驱动的<b class='flag-5'>两种方法</b>

    hex文件如何查看原c语言代码

    是处理器可以直接执行的指令,而 C 语言代码则是人类可读的高级编程语言代码。 然而,如果你想要从 .hex 文件获取一些有用的信息或者对程
    的头像 发表于 09-02 10:37 1447次阅读