當前位置:首頁 » 編程語言 » 求文件長度c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

求文件長度c語言

發布時間: 2023-05-14 19:09:08

c語言中如何方便地得到文件長度

xdg1981的方法對大多數文件有效
alexzhu80s的方法調用的是unix的函數,不是標准庫中的。不是每種操作系統都有stat函數。

沒有100%正確的方法,xdg1981的方法成功率最高。
你最好根據你所用的操作系統來調用操作系統提供的介面。例如unix的stat及windows的GetFileSize

Ⅱ 用純C語言取得文件長度

size是要讀取的位元組個數,一般用sizeof()來定義nitems是要讀取的元素個數,也就是讀取多少個sizeof()位元組個數

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

1.先用fseek將文件指針移到文件末尾,再用ftell獲取文件內指針當前的文件位置。這個位置就是文件大小。

2.#include<stdio.h>
intmain()
{
FILE*pf=fopen("F:/1.png","rb");
if(!pf)
return-1;
fseek(pf,0,SEEK_END);//移到文件末尾
printf("size=%d ",ftell(pf));
fclose(pf);
return0;
}

3.運行結果如下

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

C語言中獲取文件大小方式基納有很多,在不使用任何系統命令,僅使用C自身庫函數情況下,常用方式有兩種:

一、獲取文件系統屬性,讀取文件大小。

在C語言庫函數中有stat函數,可以獲取文件的基本信息,其中就有文件大小。

#include<sys/stat.h>//包含頭文件。
intfile_size(char*filename)//獲取文件名為filename的文件大小。
{
structstatstatbuf;
intret;
ret=stat(filename,&statbuf);//調用stat函數
if(ret!=0)return-1;//獲取失敗。
returnstatbuf.st_size;//返迴文件大小。
}

二、通過C語言文件操作,獲取文件大小。

以fopen打開的文件,通過fseek可以定位到文件尾,這時使用ftell函數,返回的文件指針偏移值,就是文件的實際大小。

代碼如下:

#include<stdio.h>//包含頭文件。碧鏈
intfile_size(char*filename)//獲取文件名為filename的文件大小。
{
FILE*fp=fopen(filename,"rb");//打開文件。
intsize;
if(fp==NULL)//打開文件失敗
return-1;
fseek(fp,0,SEEK_END);//定位文件指針到文件尾。
size=ftell(fp);//獲取文件指針偏移量,即文件大小。
fclose(fp);//關閉文件。
returnsize;
}

三、注意事項:

第一種方式為直接讀取文件信息,無需悔鋒孫打開文件,所以更高效。

四、測試代碼:

以上介面函數,均可以用如下主函數測試:

#include<stdio.h>
intmain()
{
chars[100];
intsize;
scanf("%s",s);//輸入文件名
size=file_size(s);//獲取文件大小。
if(size==-1)printf("無法獲取文件大小,可能文件並不存在或不可讀 ");
elseprintf("文件大小為%d ",size);
return0;
}

Ⅳ 如何用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函數返迴文件指針當前位置相對應文件首的便宜位元組數,參數為文件指針。
fseek函數用於移動文件指針,第一個參數是文件指針,第二個參數是偏移量(正數表示正向偏移,負數表示負向偏移),第三個參數設定文件從哪裡偏移,有三個選擇:SEEK_SET(文件頭,其是常數0)、SEEK_CUR(文件當前位置,其是常數1)、SEEK_END(文件尾,其是常數2)。
優缺點:好處是你只要會C語言,就能夠完全掌握而且十分容易理解這裡面的道理。確定是純C語言目前只能讀取不超過2G的文件。所以對於超過2G的文件,其返回值是不正確的。
方法二:利用系統函數獲取
筆者使用Uinx/Linux,所以此處就只寫這類平台上的文件大小獲許方式了。在Linux類平台上,每個被系統所管理的文件都有一個文件屬性結構體(其中一個屬性就是文件大小)與其對應,這個結構體叫stat,其內容在 /sys/stat.h中:
stat {
mode_t st_mode; //文件對應的模式,文件,目錄等
ino_t st_ino; //inode節點號
dev_t st_dev; //設備號碼
dev_t st_rdev; //特殊設備號碼
nlink_t st_nlink; //文件的連接數
uid_t st_uid; //文件所有者
gid_t st_gid; //文件所有者對應的組
off_t st_size; //普通文件,對應的文件位元組數
time_t st_atime; //文件最後被訪問的時間
time_t st_mtime; //文件內容最後被修改的時間
time_t st_ctime; //文件狀態改變時間
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函數類似的函數還有lstat函數、fstat 函數

Ⅵ C語言 文本文件長度

long get_file_size( FILE* fp )
{
if (fp==NULL) return -1;
fseek( fp, 0L, SEEK_END );
return ftell(fp);
}

Ⅶ c語言如何計算文件大小

#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE*fp;
int a;
if((fp=fopen("1.txt","rb"))==NULL)
{
printf("此文件無法打開");
exit(0);
}
fseek(fp,0,2);
a=ftell(fp);
printf("%d\n",a);
fclose(fp);
}
望採納!

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

兩族尺悉種兆乎方困嫌法:
1、用stat()函數來獲取
int main(){ struct stat st ; stat( "file.txt", &st ); printf(" file size = %d\n", st.st_size); return 0;}2、用ftell()函數來獲取
int main(){ FILE *fp; fp=fopen( "file.txt", "r"); fseek(fp, 0L, SEEK_END ); printf(" file size = %d\n", ftell(fp) ); return 0;}