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

 更新时间:2023年10月25日 09:16:53   作者:暴风雨中的白杨  
这篇文章主要介绍了C语言获取文件长度的相关知识,包括使用标准库方法和使用Linux系统调用,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

C语言获取文件长度

一、使用标准库方法

#include <stdio.h>

long get_file_size(const char * filename ){
    long size = 0;
    FILE * fp = fopen(filename,"rb");
    if( fp == NULL ) {
        printf("open file %s failed\r\n",filename);
        return 0;
    }
    // 移动文件指针到文件末尾
    fseek(fp,0,SEEK_END);
    // 获取文件长度
    size = ftell(fp);
    fclose(fp); fp = NULL;
    return size;
}

二、使用Linux系统调用

在Linux操作系统下,可以使用stat函数来获取文件信息,其中st_size字段表示文件的长度。

#include <stdio.h>
#include <sys/stat.h>

long get_file_size(const char * filename ){
    struct stat st;
    // 获取文件信息
    if( stat(filename,&st) == -1){
        printf("get file %s 's info failed\r\n",filename);
        return 0;
    }
    
    //S_ISLNK(st_mode):是否是一个连接
	//S_ISREG是否是一个常规文件
	//S_ISDIR是否是一个目录
	//S_ISCHR是否是一个字符设备
	//S_ISBLK是否是一个块设备
	//S_ISFIFO是否是一个FIFO文件
	//S_ISSOCK是否是一个SOCKET文件
    
    // 检查文件类型
    if( !S_ISREG(st.st_mode)){
        printf("%s 不是一个常规文件\r\n",filename);
        return 0;
    }
    return st.st_size;
}

到此这篇关于C语言获取文件长度的文章就介绍到这了,更多相关C语言文件长度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 嵌入式QT移植的实现

    嵌入式QT移植的实现

    本文主要介绍了嵌入式QT移植的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • VC WinExec打开指定程序或者文件的方法

    VC WinExec打开指定程序或者文件的方法

    使用WinExec命令打开指定程序或者文件的参数说明
    2008-11-11
  • 详解C语言位域的使用与注意事项

    详解C语言位域的使用与注意事项

    所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。下面这篇文章就给大家介绍下关于C语言中位域的使用与注意事项。
    2016-12-12
  • C++实现简单通讯录系统

    C++实现简单通讯录系统

    这篇文章主要为大家详细介绍了C++实现简单通讯录系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • OpenCV获取图像中直线上的数据具体流程

    OpenCV获取图像中直线上的数据具体流程

    对图像进行处理时,经常会有这类需求:客户想要提取出图像中某条直线或者ROI区域内的感兴趣数据,进行重点关注,怎么操作呢,下面小编通过实例代码介绍下OpenCV获取图像中直线上的数据,一起看看吧
    2021-11-11
  • C++数组去重十种方法

    C++数组去重十种方法

    数组去重是一个常见的操作,本文主要介绍了C++数组去重十种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Linux c 运行时获取动态库所在路径的操作方法

    Linux c 运行时获取动态库所在路径的操作方法

    运行时获取动态库地址除了dladdr和解析/proc/<pid>/maps还可以有一些别的做法,比如可以用nm获取库文件的符号表进行对比,但如果库文件被strip处理过就不能这么用了,本文介绍的两种方案是泛用性最高的,感兴趣的朋友一起看看吧
    2025-06-06
  • libxml教程(图文详解)

    libxml教程(图文详解)

    本篇文章是对libxm进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言带头双向循环链表的示例代码

    C语言带头双向循环链表的示例代码

    这篇文章主要介绍了如何利用C语言实现带头双向循环链表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-11-11
  • C语言的分支和循环语句你了解吗

    C语言的分支和循环语句你了解吗

    这篇文章主要为大家详细介绍了C语言的分支和循环语句,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02

最新评论