linux c 獲取文件大小

問題描述:

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

發佈了69 篇原創文章 · 獲贊 46 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章