C語言是一種比較底層的語言,有時在其他語言中很容易操作的事情,在C語言中就比較麻煩,例如獲取一個檔案的大小,許多語言都可以直接呼叫函式解決,C語言中卻沒有直接對應的函式獲取檔案大小,下面介紹一個簡單的方法,
代碼如下:
int main()
{
char filename[100];
FILE *fp=fopen(filename,“r”);//filename為要打開的檔案名,r為打開檔案格式
//新版本中打開檔案fopen_s(&fp,filename,“r”);
if(!fp) return -1;
fseek(fp,0L,SEEK_END);//fseek為庫函式,SEEK_END定位到檔案結尾
int size=ftell(fp);//ftell為庫函式
fclose(fp);//檔案關閉
printf(“檔案大小為%d個位元組”,size);
return 0;
}
這種方法是通過fseek把檔案指標移動到末尾,再通過ftell函式讀取檔案大小,由于ftell的回傳值為long,所以位元組數不能超過long的取值,一般情況下檔案不能超過2G大小,否則就會出錯,
如果檔案比較大的情況下,可以通過fsetpos和fgetpos獲取檔案大小,最致命的缺陷就是它需要加載檔案到記憶體,然后跳轉到檔案末尾,這個操作非常耗時!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230651.html
標籤:其他
下一篇:C++語言基礎—選擇結構
