C語言中沒有直接獲取文件長度的接口,但是我們可以使用標準庫提供的函數來間接的獲取文件長度。這里提供兩種方法。
使用C標準庫獲取文件長度
不論你使用的是哪個操作系統,只要該操作系統支持C標準庫,那么就可以通過下述代碼獲取文件長度:
#include/** *@brief獲取文件長度 * *@paramfile_name文件名(包含路徑) * *@return-1:獲取文件長度失敗其他值:文件長度 * *@version *1,2023-08-09,AilsonJack,Createdfunction */ longget_file_len(constchar*file_name) { FILE*filep; longlen; //打開文件 filep=fopen(file_name,"rb"); if(filep==NULL) { printf("fopen%sfailed! ",file_name); return-1; } //移動文件指針到文件末尾 fseek(filep,0,SEEK_END); //獲取文件長度 len=ftell(filep); //關閉文件 fclose(filep); returnlen; }
使用C標準庫獲取文件長度的測試結果如下圖所示:
Snipaste_2023-09-23_10-00-18
使用Linux的系統調用獲取文件長度
在Linux操作系統下,可以使用stat函數來獲取文件信息,其中st_size字段表示文件的長度,代碼如下所示:
#include#include /** *@brief獲取文件長度 * *@paramfile_name文件名(包含路徑) * *@return-1:獲取文件長度失敗其他值:文件長度 * *@version *1,2023-08-09,AilsonJack,Createdfunction */ longget_file_len(constchar*file_name) { structstatst; //獲取文件信息 if(stat(file_name,&st)==-1) { perror("無法獲取文件信息"); return-1; } //檢查文件類型 if(!S_ISREG(st.st_mode)) { printf("%s不是一個常規文件! ",file_name); return-1; } returnst.st_size; }
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7542瀏覽量
131058 -
Linux操作系統
+關注
關注
0文章
54瀏覽量
10927
原文標題:C語言-獲取文件長度
文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
用兩種方法解決電路設計問題
將200V的電壓施加到500歐姆的抽頭電阻器。找到連接到25V時需要0.1A電路的兩個分接點之間的電阻。我用兩種方法解決了這個問題。但正確的答案只能通過一種方法來實現??傠娮铻镽a + Rb
發表于 09-14 13:54
請問c2000配置時鐘的兩種方法有什么區別?
現使用20M的外部晶振,配置60M的主頻,通過1.20*6/ 2 = 60M 2.20*3/ 1 = 60M這兩種方法都能將系統時鐘 配制成60M,請問有什么區別的,會導致精度的不一樣嗎,哪種更好呢?
發表于 10-10 11:34
討論Linux系統中設置開機自動運行的兩種方法
有時可能會需要在重啟時或者每次系統啟動時運行某些命令或者腳本。我們要怎樣做呢?本文中我們就對此進行討論。 我們會用兩種方法來描述如何在 CentOS/RHEL 以及 Ubuntu 系統上做到重啟或者系統啟動時執行命令和腳本。 兩種方法都通過了測試。
發表于 07-09 06:38
pcb庫封裝常用的兩種方法
識別模塊通訊模塊調試模塊單片機模塊PCB庫——原理圖庫——原理圖首先需要明白他們之間的關系畫圖的實質是什么pcb庫封裝常用的兩種方法,簡單實用原理圖封裝原理圖的封裝和pcb...
發表于 07-29 09:33
STM32操作矩陣鍵盤的兩種方法
目錄STM32操作矩陣鍵盤的兩種方法——掃描和中斷一、矩陣鍵盤的結構和原理二、掃描式矩陣鍵盤的原理和實現三、中斷式矩陣鍵盤的原理和實現四、兩種方案優劣STM32操作矩陣鍵盤的兩種方法——掃描和中斷
發表于 08-12 06:33
在STM32上使用printf的兩種方法 精選資料推薦
轉載:https://blog.csdn.net/xyzjacky/article/details/103686717/在STM32上使用printf的兩種方法xyzjacky 2019-12-24
發表于 08-23 09:08
淺析addContext()與addWebapp()這兩種方法
addContext()與addWebapp()這兩種方法都是向嵌入式tomcat添加web應用程序。addContext()需要配置相關所有內容,比如配置默認的Servlet,否則將無法訪問靜態
發表于 12-16 07:02
1.3 兩種運行 Python 程序方法
界面上執行 Python 語句使用命令行執行 .py 后綴的腳本文件下面分別對這兩種方法進行演示。1. 第一種方法首先打開你的終端,直接輸入 python3 回車,然后輸入 print("
發表于 02-16 18:31
分享兩種在C代碼中嵌入二進制文件的方法
前言有時候調試代碼需要測試某種格式的文件,比如mp3等,常用的有兩種辦法。將mp3文件存放到fat等文件系統中,然后使用文件系統API進行讀
發表于 12-30 15:51
簡述安裝打印機驅動的兩種方法
安裝打印機驅動通常有兩種方法,一種是直接使用驅動文件自帶的安裝程序自動安裝,而另一種方法就是我們自己手動進行安裝。兩種方法各有利弊,日常工作中可以根據實際情況來選擇使用哪
評論