问题描述:

在使用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;  
} 

GitHub 加速计划 / li / linux-dash
13
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐