C语言获取文件长度

C语言获取文件长度

文章目录

一、使用标准库方法

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字段表示文件的长度。

c 复制代码
#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;
}
相关推荐
心之伊始3 分钟前
Spring Boot Actuator + Micrometer 实战:自定义业务指标并接入 Prometheus 观测接口耗时
java·spring boot·prometheus·actuator·micrometer
坚果派·白晓明4 分钟前
鸿蒙 PC应用集成 hwloc:3 大 NAPI & 编译坑详解
c语言·华为·ai编程·harmonyos·atomcode
এ慕ོ冬℘゜4 分钟前
jQuery 高可用多图上传组件(企业级封装 + 踩坑全解 + 可直接上线)
前端·javascript·jquery
Full Stack Developme7 分钟前
Spring Integration 教程
java·后端·spring
爱勇宝10 分钟前
AI 时代,前端工程师的话语权正在下降?
前端·后端
kymjs张涛10 分钟前
一个月,纯VibeCoding,全平台云笔记APP
前端·javascript·后端
摇滚侠14 分钟前
MyBatis 入门到项目实战 MyBatis 分页插件 65-66
java·开发语言·sql·mybatis
星辰_mya16 分钟前
autowired和resource区别
java·后端·spring·架构·原理
巴勒个啦17 分钟前
esbuild 插件实战:5个真实场景带你自定义构建流水线
前端·angular.js
我登哥MVP17 分钟前
走进 Gang of Four 设计模式:装饰器模式
java·spring boot·设计模式·装饰器模式