linux c 获取文件大小

本文介绍了使用C语言获取文件大小的方法,指出标准C库函数对于大于2GB的文件存在限制,并提供了一种使用stat函数来正确获取大文件大小的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

在使用c语言获取文件大小的时候发现有的文件大小可以正确获取,有的不能,以下为初始代码

unsigned long get_file_size(const char *filename)  
{  
    unsigned long size;  
    FILE* fp = fopen( filename, "rb" );  
    if(fp==NULL)  
    {  
        printf("ERROR: Open file %s failed.\n", filename);  
        return 0;  
    }  
    fseek( fp, SEEK_SET, SEEK_END );  
    size=ftell(fp);  
    fclose(fp);  
    return size;  
} 

后来发现标准C的文件操作函数不支持对超过2G的文件读取。

解决办法:

使用stat函数可以正确获取到超大文件的状态信息

unsigned long get_file_size(const char *filename)  
{  
    struct stat buf;  
    if(stat(filename, &buf)<0)  
    {  
        return 0;  
    }  
    return (unsigned long)buf.st_size;  
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值