C語(yǔ)言中沒(méi)有直接獲取文件長(zhǎng)度的接口,但是我們可以使用標(biāo)準(zhǔn)庫(kù)提供的函數(shù)來(lái)間接的獲取文件長(zhǎng)度。這里提供兩種方法。
使用C標(biāo)準(zhǔn)庫(kù)獲取文件長(zhǎng)度
不論你使用的是哪個(gè)操作系統(tǒng),只要該操作系統(tǒng)支持C標(biāo)準(zhǔn)庫(kù),那么就可以通過(guò)下述代碼獲取文件長(zhǎng)度:
#include/** *@brief獲取文件長(zhǎng)度 * *@paramfile_name文件名(包含路徑) * *@return-1:獲取文件長(zhǎng)度失敗其他值:文件長(zhǎng)度 * *@version *1,2023-08-09,AilsonJack,Createdfunction */ longget_file_len(constchar*file_name) { FILE*filep; longlen; //打開(kāi)文件 filep=fopen(file_name,"rb"); if(filep==NULL) { printf("fopen%sfailed! ",file_name); return-1; } //移動(dòng)文件指針到文件末尾 fseek(filep,0,SEEK_END); //獲取文件長(zhǎng)度 len=ftell(filep); //關(guān)閉文件 fclose(filep); returnlen; }
使用C標(biāo)準(zhǔn)庫(kù)獲取文件長(zhǎng)度的測(cè)試結(jié)果如下圖所示:
Snipaste_2023-09-23_10-00-18
使用Linux的系統(tǒng)調(diào)用獲取文件長(zhǎng)度
在Linux操作系統(tǒng)下,可以使用stat函數(shù)來(lái)獲取文件信息,其中st_size字段表示文件的長(zhǎng)度,代碼如下所示:
#include#include /** *@brief獲取文件長(zhǎng)度 * *@paramfile_name文件名(包含路徑) * *@return-1:獲取文件長(zhǎng)度失敗其他值:文件長(zhǎng)度 * *@version *1,2023-08-09,AilsonJack,Createdfunction */ longget_file_len(constchar*file_name) { structstatst; //獲取文件信息 if(stat(file_name,&st)==-1) { perror("無(wú)法獲取文件信息"); return-1; } //檢查文件類(lèi)型 if(!S_ISREG(st.st_mode)) { printf("%s不是一個(gè)常規(guī)文件! ",file_name); return-1; } returnst.st_size; }
審核編輯:劉清
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7594瀏覽量
135858 -
Linux操作系統(tǒng)
+關(guān)注
關(guān)注
0文章
54瀏覽量
11016
原文標(biāo)題:C語(yǔ)言-獲取文件長(zhǎng)度
文章出處:【微信號(hào):嵌入式那些事,微信公眾號(hào):嵌入式那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論