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;
}
相关推荐
q***01657 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
x***13397 小时前
【MyBatisPlus】MyBatisPlus介绍与使用
android·前端·后端
dvvvvvw7 小时前
调用函数两点间的距离.c
c语言
f***68608 小时前
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
java·spring boot·后端
z***75159 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
likuolei9 小时前
Eclipse 快捷键
java·ide·eclipse
fruge10 小时前
仿写优秀组件:还原 Element Plus 的 Dialog 弹窗核心逻辑
前端
an869500110 小时前
vue新建项目
前端·javascript·vue.js
w***954911 小时前
SQL美化器:sql-beautify安装与配置完全指南
android·前端·后端
哈茶真的c11 小时前
【书籍心得】左耳听风:传奇程序员练级攻略
java·c语言·python·go