0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言獲取文件長(zhǎng)度的兩種方法

嵌入式那些事 ? 來(lái)源:嵌入式那些事 ? 2023-10-10 16:15 ? 次閱讀

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é)果如下圖所示:

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

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;
}






審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux端口的開(kāi)啟的兩種方法需要掌握

    Linux端口的開(kāi)啟的兩種方法需要掌握
    發(fā)表于 11-28 10:05 ?1195次閱讀

    STM32操作矩陣鍵盤(pán)的兩種方法

    目錄STM32操作矩陣鍵盤(pán)的兩種方法——掃描和中斷一、矩陣鍵盤(pán)的結(jié)構(gòu)和原理二、掃描式矩陣鍵盤(pán)的原理和實(shí)現(xiàn)三、中斷式矩陣鍵盤(pán)的原理和實(shí)現(xiàn)四、兩種方案優(yōu)劣STM32操作矩陣鍵盤(pán)的兩種方法——掃描和中斷
    發(fā)表于 08-12 06:33

    關(guān)斷檢流放大器的兩種方法

    摘要:本應(yīng)用筆記介紹了兩種關(guān)斷高邊電流檢測(cè)器的方法兩種方法都可以在下一代便攜式多媒體設(shè)備中用于電源管理。從而使系統(tǒng)在保證用戶(hù)功能需求的前提下有效延長(zhǎng)電池的使
    發(fā)表于 05-07 08:48 ?23次下載

    AODV協(xié)議中解決斷鏈問(wèn)題的兩種方法

    AODV協(xié)議中解決斷鏈問(wèn)題的兩種方法 2.1 備用路由方法由于常規(guī)路由協(xié)議維護(hù)完整的路由表,能得知網(wǎng)絡(luò)中的拓?fù)淝闆r,很容易
    發(fā)表于 03-01 17:31 ?1113次閱讀
    AODV協(xié)議中解決斷鏈問(wèn)題的<b class='flag-5'>兩種方法</b>

    使用jdbc連接上oracle的兩種方法

    本文主要介紹了使用jdbc連接上oracle的兩種方法:1、 使用thin連接,2、 使用oci連接(Oracle Call Interface)
    發(fā)表于 02-06 10:43 ?1698次閱讀

    單片機(jī)C語(yǔ)言編程中定時(shí)器初值計(jì)算的兩種方法

    單片機(jī)C語(yǔ)言編程中,定時(shí)器的初值對(duì)于初學(xué)者真的是比較不好計(jì)算,因此總結(jié)了以下幾種方法。
    的頭像 發(fā)表于 12-30 16:59 ?1.1w次閱讀

    51單片機(jī)的兩種方法點(diǎn)亮LED的C語(yǔ)言程序免費(fèi)下載

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

    提升家里網(wǎng)速的兩種方法

    總是嫌家里的網(wǎng)速慢,看視頻“轉(zhuǎn)圈圈”,玩游戲“時(shí)延高”,如何提升家里的網(wǎng)速呢?這里介紹兩種方法
    的頭像 發(fā)表于 02-19 21:10 ?1.4w次閱讀
    提升家里網(wǎng)速的<b class='flag-5'>兩種方法</b>

    C語(yǔ)言訪問(wèn)MCU寄存器的兩種方式

    單片機(jī)的特殊功能寄存器SFR,是SRAM地址已經(jīng)確定的SRAM單元,在C語(yǔ)言環(huán)境下對(duì)其訪問(wèn)歸納起來(lái)有兩種方法
    發(fā)表于 04-11 06:01 ?10次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>訪問(wèn)MCU寄存器的<b class='flag-5'>兩種</b>方式

    51單片機(jī)控制NandFlash讀寫(xiě)的兩種方法

    51單片機(jī)控制NandFlash讀寫(xiě)的兩種方法(c語(yǔ)言嵌入式開(kāi)發(fā)視頻)-該文檔為51單片機(jī)控制NandFlash讀寫(xiě)的兩種方法總結(jié)文檔,是一份很不錯(cuò)的參考資料,具有較高參考價(jià)值,感興趣
    發(fā)表于 07-30 17:01 ?22次下載
    51單片機(jī)控制NandFlash讀寫(xiě)的<b class='flag-5'>兩種方法</b>

    STM32操作矩陣鍵盤(pán)的兩種方法——掃描和中斷

    目錄STM32操作矩陣鍵盤(pán)的兩種方法——掃描和中斷一、矩陣鍵盤(pán)的結(jié)構(gòu)和原理二、掃描式矩陣鍵盤(pán)的原理和實(shí)現(xiàn)三、中斷式矩陣鍵盤(pán)的原理和實(shí)現(xiàn)四、兩種方案優(yōu)劣STM32操作矩陣鍵盤(pán)的兩種方法——掃描和中斷
    發(fā)表于 11-26 13:36 ?36次下載
    STM32操作矩陣鍵盤(pán)的<b class='flag-5'>兩種方法</b>——掃描和中斷

    【Linux + C語(yǔ)言C語(yǔ)言獲取文件大小的方法都在這

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

    LDO在IoT中省電的兩種方法

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

    簡(jiǎn)述安裝打印機(jī)驅(qū)動(dòng)的兩種方法

    安裝打印機(jī)驅(qū)動(dòng)通常有兩種方法,一種是直接使用驅(qū)動(dòng)文件自帶的安裝程序自動(dòng)安裝,而另一種方法就是我們自己手動(dòng)進(jìn)行安裝。兩種方法各有利弊,日常工作中可以根據(jù)實(shí)際情況來(lái)選擇使用哪
    的頭像 發(fā)表于 04-04 09:46 ?4582次閱讀
    簡(jiǎn)述安裝打印機(jī)驅(qū)動(dòng)的<b class='flag-5'>兩種方法</b>

    hex文件如何查看原c語(yǔ)言代碼

    是處理器可以直接執(zhí)行的指令,而 C 語(yǔ)言代碼則是人類(lèi)可讀的高級(jí)編程語(yǔ)言代碼。 然而,如果你想要從 .hex 文件獲取一些有用的信息或者對(duì)程
    的頭像 發(fā)表于 09-02 10:37 ?1192次閱讀