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

    文章

    7530

    浏览量

    128591
  • Linux操作系统

    关注

    0

    文章

    54

    浏览量

    10908

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

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

收藏 人收藏

    评论

    相关推荐

    51系列单片机输出PWM的两种方法

    51系列单片机输出PWM的两种方法
    发表于 05-26 15:39

    两种方法解决电路设计问题

    将200V的电压施加到500欧姆的抽头电阻器。找到连接到25V时需要0.1A电路的个分接点之间的电阻。我用两种方法解决了这个问题。但正确的答案只能通过一种方法来实现。总电阻为Ra + Rb
    发表于 09-14 13:54

    请问c2000配置时钟的两种方法有什么区别?

    现使用20M的外部晶振,配置60M的主频,通过1.20*6/ 2 = 60M 2.20*3/ 1 = 60M这两种方法都能将系统时钟 配制成60M,请问有什么区别的,会导致精度的不一样吗,哪种更好呢?
    发表于 10-10 11:34

    讨论Linux系统中设置开机自动运行的两种方法

    有时可能会需要在重启时或者每次系统启动时运行某些命令或者脚本。我们要怎样做呢?本文中我们就对此进行讨论。 我们会用两种方法来描述如何在 CentOS/RHEL 以及 Ubuntu 系统上做到重启或者系统启动时执行命令和脚本。 两种方法都通过了测试。
    发表于 07-09 06:38

    每个c语言程序文件中都必须有一个main函数

    2018-11-14 14:46:32 阅读数 4047 收藏展开c语言文件编程,即main文件调用其他.c
    发表于 07-20 06:05

    pcb库封装常用的两种方法

    识别模块通讯模块调试模块单片机模块PCB库——原理图库——原理图首先需要明白他们之间的关系画图的实质是什么pcb库封装常用的两种方法,简单实用原理图封装原理图的封装和pcb...
    发表于 07-29 09:33

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

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

    在STM32上使用printf的两种方法 精选资料推荐

    转载:https://blog.csdn.net/xyzjacky/article/details/103686717/在STM32上使用printf的两种方法xyzjacky 2019-12-24
    发表于 08-23 09:08

    请问C语言两种引用头文件方式的区别是什么?

    请问C语言两种引用头文件方式的区别是什么?
    发表于 10-15 07:36

    浅析addContext()与addWebapp()这两种方法

    addContext()与addWebapp()这两种方法都是向嵌入式tomcat添加web应用程序。addContext()需要配置相关所有内容,比如配置默认的Servlet,否则将无法访问静态
    发表于 12-16 07:02

    1.3 两种运行 Python 程序方法

    界面上执行 Python 语句使用命令行执行 .py 后缀的脚本文件下面分别对这两种方法进行演示。1. 第一种方法首先打开你的终端,直接输入 python3 回车,然后输入 print("
    发表于 02-16 18:31

    分享两种C代码中嵌入二进制文件方法

    前言有时候调试代码需要测试某种格式的文件,比如mp3等,常用的有两种办法。将mp3文件存放到fat等文件系统中,然后使用文件系统API进行读
    发表于 12-30 15:51

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

    【Linux + C语言】C语言获取文件大小的方法都在这
    的头像 发表于 08-31 12:49 2897次阅读
    【Linux + C<b class='flag-5'>语言</b>】C<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 3745次阅读
    简述安装打印机驱动的<b class='flag-5'>两种方法</b>