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;
}
相关推荐
belhomme4 分钟前
(面试题)Netty 线程模型
java·面试·netty
vim怎么退出37 分钟前
谷歌性能优化知识点总结
前端
专业抄代码选手39 分钟前
在react中,TSX是如何转变成JS的
前端·javascript
葡萄城技术团队39 分钟前
【实践篇】从零到一:手把手教你搭建一套企业级 SpreadJS 协同设计器
前端
忆江南1 小时前
# iOS Block 深度解析
前端
米丘1 小时前
vue-router v5.x 路由模式关于 createWebHistory、 createWebHashHistory的实现
前端
本末倒置1831 小时前
Bun 内置模块全解析:告别第三方依赖,提升开发效率
前端·javascript·node.js
踩着两条虫1 小时前
AI 驱动的 Vue3 应用开发平台 深入探究(二):核心概念之DSL模式与数据模型
前端·vue.js·ai编程
牛奶2 小时前
200 OK不是"成功"?HTTP状态码潜规则
前端·http·浏览器
Hilaku2 小时前
OpenClaw 很爆火,但没人敢聊它的权限安全🤷‍♂️
前端·javascript·程序员