<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言獲取文件長度的兩種方法

嵌入式那些事 ? 來源:嵌入式那些事 ? 2023-10-10 16:15 ? 次閱讀

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標準庫獲取文件長度的測試結果如下圖所示:

fee54b1c-6743-11ee-939d-92fbcf53809c.png

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

    每個c語言程序文件中都必須有一個main函數

    2018-11-14 14:46:32 閱讀數 4047 收藏展開c語言文件編程,即main文件調用其他.c
    發表于 07-20 06:05

    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

    請問C語言兩種引用頭文件方式的區別是什么?

    請問C語言兩種引用頭文件方式的區別是什么?
    發表于 10-15 07:36

    淺析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

    51單片機的兩種方法點亮LED的C語言程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機的兩種方法總線操作和位操作點亮LED的C語言程序免費下載。
    發表于 08-19 17:31 ?1次下載
    51單片機的<b class='flag-5'>兩種方法</b>點亮LED的C<b class='flag-5'>語言</b>程序免費下載

    【Linux + C語言】C語言獲取文件大小的方法都在這

    【Linux + C語言】C語言獲取文件大小的方法都在這
    的頭像 發表于 08-31 12:49 ?2978次閱讀
    【Linux + C<b class='flag-5'>語言</b>】C<b class='flag-5'>語言</b><b class='flag-5'>獲取</b><b class='flag-5'>文件</b>大小的<b class='flag-5'>方法</b>都在這

    LDO在IoT中省電的兩種方法

    LDO在IoT中省電的兩種方法
    發表于 11-04 09:50 ?0次下載
    LDO在IoT中省電的<b class='flag-5'>兩種方法</b>

    簡述安裝打印機驅動的兩種方法

    安裝打印機驅動通常有兩種方法,一種是直接使用驅動文件自帶的安裝程序自動安裝,而另一種方法就是我們自己手動進行安裝。兩種方法各有利弊,日常工作中可以根據實際情況來選擇使用哪
    的頭像 發表于 04-04 09:46 ?3850次閱讀
    簡述安裝打印機驅動的<b class='flag-5'>兩種方法</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>