真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

c語言求文件大小的函數,c語言如何獲取文件大小

c語言如何通過文件屬性獲取文件大小

c語言可以通過stat()函數獲得文件屬性,通過返回的文件屬性,從中獲取文件大小。

創(chuàng)新互聯服務項目包括朗縣網站建設、朗縣網站制作、朗縣網頁制作以及朗縣網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,朗縣網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到朗縣省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

#include sys/stat.h ?可見以下結構體和函數

struct stat {

? _dev_t st_dev;

? _ino_t st_ino;

? unsigned short st_mode;

? short st_nlink;

? short st_uid;

? short st_gid;

? _dev_t st_rdev;

? _off_t st_size; ? //文件大小

? time_t st_atime;

? time_t st_mtime;

? time_t st_ctime;

? };

stat(const char *, struct _stat *); ?//根據文件名得到文件屬性

參考代碼:

#include?sys/stat.h

void?main(?)

{

struct?stat?buf?;

if?(?stat(?"test.txt",?buf?)??0?)

{

perror(?"stat"?);

return?;

}

printf("file?size:%d\n",?buf.st_size?);

}

如何用C語言獲取文件的大小

方法一:利用純C語言來獲取文件大小

unsigned long get_file_size(const char *filename){

unsigned long size;

FILE* fp = fopen( filename, "rb" );

if(fp==NULL){

printf("ERROR: Open file %s failed.\n", filename);

return 0;

}

fseek( fp, 0L, SEEK_END );

size=ftell(fp);

fclose(fp);

return size;

}

注:

ftell函數返回文件指針當前位置相對應文件首的便宜字節(jié)數,參數為文件指針。

fseek函數用于移動文件指針,第一個參數是文件指針,第二個參數是偏移量(正數表示正向偏移,負數表示負向偏移),第三個參數設定文件從哪里偏移,有三個選擇:SEEK_SET(文件頭,其是常數0)、SEEK_CUR(文件當前位置,其是常數1)、SEEK_END(文件尾,其是常數2)。

優(yōu)缺點:好處是你只要會C語言,就能夠完全掌握而且十分容易理解這里面的道理。確定是純C語言目前只能讀取不超過2G的文件。所以對于超過2G的文件,其返回值是不正確的。

方法二:利用系統(tǒng)函數獲取

筆者使用Uinx/Linux,所以此處就只寫這類平臺上的文件大小獲許方式了。在Linux類平臺上,每個被系統(tǒng)所管理的文件都有一個文件屬性結構體(其中一個屬性就是文件大?。┡c其對應,這個結構體叫stat,其內容在 /sys/stat.h中:

stat {

mode_t st_mode; //文件對應的模式,文件,目錄等

ino_t st_ino; //inode節(jié)點號

dev_t st_dev; //設備號碼

dev_t st_rdev; //特殊設備號碼

nlink_t st_nlink; //文件的連接數

uid_t st_uid; //文件所有者

gid_t st_gid; //文件所有者對應的組

off_t st_size; //普通文件,對應的文件字節(jié)數

time_t st_atime; //文件最后被訪問的時間

time_t st_mtime; //文件內容最后被修改的時間

time_t st_ctime; //文件狀態(tài)改變時間

blksize_t st_blksize; //文件內容對應的塊大小

blkcnt_t st_blocks; //偉建內容對應的塊數量

}

文件的上述屬性,可以通過一個stat函數來獲取。

stat函數聲明形式:

stat(const char *restrict path, struct stat *restrict buf);

第一個參數是文件名,第二個參數是指向一個stat結構的指針。

由此我們很容易寫出如下函數:

unsigned long get_file_size(const char *filename){

struct stat buf;

if(stat(filename, buf)0){

return 0;

}

return (unsigned long)buf.st_size;

}

在進行大文件處理時,顯然需要采取后者。

注:與stat函數類似的函數還有l(wèi)stat函數、fstat 函數

C語言中,怎么知道文件的大小?

你需要使用fseek函數將文件指針指向最后:

fseek(fp, 0L, SEEK_END);

sz = ftell(fp);

其中sz就是文件的大小。

當你知道文件的大小后,就可以通過fseek重新定義到文件開始的位置:

fseek(fp, 0L, SEEK_SET);

或使用下面的函數定義的文件開始:

rewind(fp);

可以到秒秒學上看看相關的內容,上面的課程講解得可以的。


網站欄目:c語言求文件大小的函數,c語言如何獲取文件大小
文章路徑:http://weahome.cn/article/dsspjho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部