intfile_size(char*filename)
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比華安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式華安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋華安地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
{
FILE*fp=fopen(filename,"r");
if(!fp)return-1;
fseek(fp,0L,SEEK_END);
intsize=ftell(fp);
fclose(fp);
returnsize;
}
擴展資料
C語言獲取文件長度及全部內(nèi)容
FILE*fp;
fp=fopen("localfile","rb");//localfile文件名
fseek(fp,0L,SEEK_END);/*定位到文件末尾*/
flen=ftell(fp);/*得到文件大小*/
p=(char*)malloc(flen+1);/*根據(jù)文件大小動態(tài)分配內(nèi)存空間*/
if(p==NULL)
{
fclose(fp);
return0;
}
fseek(fp,0L,SEEK_SET);/*定位到文件開頭*/
fread(p,flen,1,fp);/*一次性讀取全部文件內(nèi)容*/
p[flen]=0;/*字符串結(jié)束標(biāo)志*/
你需要使用fseek函數(shù)將文件指針指向最后:
fseek(fp, 0L, SEEK_END);
sz = ftell(fp);
其中sz就是文件的大小。
當(dāng)你知道文件的大小后,就可以通過fseek重新定義到文件開始的位置:
fseek(fp, 0L, SEEK_SET);
或使用下面的函數(shù)定義的文件開始:
rewind(fp);
可以到秒秒學(xué)上看看相關(guān)的內(nèi)容,上面的課程講解得可以的。
c語言可以通過stat()函數(shù)獲得文件屬性,通過返回的文件屬性,從中獲取文件大小。
#include
sys/stat.h
可見以下結(jié)構(gòu)體和函數(shù)
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
*);
//根據(jù)文件名得到文件屬性
參考代碼:
#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 );
}
在文件屬性中查看文件大小。
根據(jù)查詢相關(guān)公開信息顯示,C語言庫函數(shù)中有stat函數(shù),可以獲取文件的基本信息,其中就有文件大小。
C語言是一門面向過程的、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā),C語言能以簡易的方式編譯、處理低級存儲器。
#include io.h
#include stdio.h
int main(void)
{
FILE * f = 0; int fn = 0, sz = 0;
f = fopen("c:\\abc.txt", "rb");
if(!f) {
fprintf(stderr, "File Not Found.\n");
return 0;
}/*end if*/
fn = _fileno(f); /*取得文件指針的底層流式文件號*/
sz = _filelength(fn);/*根據(jù)文件號取得文件大小*/
printf("文件abc.txt大小為:%d字節(jié).\n", sz);
fclose(f);
return 0;
}/*end main*/
備注:上述程序適用于任何一種文件,都可以直接求出大小。