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;
}
相关推荐
青山木5 分钟前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
MayBaymax6 分钟前
Spring AI Alibaba Graph 实战:客服工单智能处理
java·ai·ai编程
xy345325 分钟前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计
老王以为31 分钟前
走进 AI Agent 第四篇(上):知识获取管道——RAG 基础
前端·人工智能·全栈
光依旧37 分钟前
MCP实战手记系列(五):让工具返回一个能点的界面(文末附github源码链接)
java·spring ai·前端集成·mcp·mcp apps
APIshop43 分钟前
淘宝选品接口实战:从召回、详情、佣金到转链的 Java 接入笔记
java
夏天要喝冰可乐44 分钟前
一处写作,多平台分发:我给掘金做了一款开源 Chrome 插件
前端·chrome·vibecoding
91刘仁德1 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
货拉拉技术1 小时前
货拉拉开源Hadice:安卓 & 鸿蒙桌面调试工具
前端