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;
}
相关推荐
段ヤシ.4 分钟前
回顾Java知识点,面试题汇总Day13:数据库MySQL(持续更新)
java·数据库·mysql
W_LuYi1858 分钟前
Tauri + Rust + Vue 3 打造极速轻量桌面应用
java·开发语言·vue.js·rust
caimouse13 分钟前
Reactos 第 5 章 进程与线程 — 5.1 概述
c语言·windows·架构
winfredzhang15 分钟前
用 Node.js + SQLite + 原生前端写一个本地情绪急救 Web App:情绪降落伞 Mood Parachute
前端·sqlite·node.js·express·情绪管理
小张小张爱学习29 分钟前
Java基础面试题
java·开发语言
宋哥转AI32 分钟前
Java后端转AI Agent:技术栈全景图与从ReAct到多Agent协作实战
java·人工智能·agent
樱花的浪漫35 分钟前
Typescript、Zod基础
前端·javascript·人工智能·语言模型·自然语言处理·typescript
Mr.Entropy35 分钟前
ecplise 导出maven依赖jar
java·maven·jar
Bigger41 分钟前
记一次坑爹的 Cloudflare Pages 部署:Failed to load module script 是怎么把我的 SPA 搞挂的
前端·ci/cd·浏览器
ANnianStriver42 分钟前
PetLumina 05 — App 端 UI 效果应用
java·ui·ai编程