實際開發中,有時候需要先獲取檔案大小再進行下一步操作。c語言沒有提供獲取檔案大小的函式,要想實現該功能,必須自己編寫函式。
ftell() 函式用來獲取檔案內部指標(位置指標)距離檔案開頭的位元組數,它的原型為:
long int ftell ( file * fp );
注意:fp 要以二進位制方式開啟,如果以文字方式開啟,函式的返回值可能沒有意義。
先使用 fseek() 將檔案內部指標定位到檔案末尾,再使用 ftell() 返回內部指標距離檔案開頭的位元組數,這個返回值就等於檔案的大小。請看下面的**:
這段**並不健壯,它移動了檔案內部指標,可能會導致接下來的檔案操作錯誤。例如:
long size = fsize(fp);
fread(buffer, 1, 1, fp);
fread() 函式將永遠讀取不到內容。
所以,獲取到檔案大小後還需要恢復檔案內部指標,請看下面的**:
fpos_t 是在 stdio.h 中定義的結構體,用來儲存檔案的內部指標。fgetpos() 用來獲取檔案內部指標,fsetpos() 用來設定檔案內部指標。
完整的示例:
原文位址:
獲取檔案大小(C語言)
方法一 利用純c語言來獲取檔案大小 unsigned long get file size const char filename fseek fp,0l,seek end size ftell fp fclose fp return size 注 ftell函式返回檔案指標當前位置相對應檔案首的偏...
C 獲取檔案大小
在c語言中測試檔案的大小,主要使用二個標準函式。1.fseek 函式原型 intfseek file stream,long int offset,int origin 引數說明 stream,檔案流指標 offest,偏移量 orgin,原 始位置。其中orgin的可選值有seek set 檔案開...
C 獲取檔案大小
當然了都需要引入system.io這個命名空間 第乙個 public static long getdirectorylength string dirpath 獲取di中所有的資料夾,並存到乙個新的物件陣列中,以進行遞迴 directoryinfo dis di.getdirectories if...