c语言求文件大小的函数,c语言如何获取文件大小

c语言如何通过文件属性获取文件大小

c语言可以通过stat()函数获得文件属性,通过返回的文件属性,从中获取文件大小。

创新互联服务项目包括朗县网站建设、朗县网站制作、朗县网页制作以及朗县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,朗县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到朗县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

#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函数返回文件指针当前位置相对应文件首的便宜字节数,参数为文件指针。

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语言中,怎么知道文件的大小?

你需要使用fseek函数将文件指针指向最后:

fseek(fp, 0L, SEEK_END);

sz = ftell(fp);

其中sz就是文件的大小。

当你知道文件的大小后,就可以通过fseek重新定义到文件开始的位置:

fseek(fp, 0L, SEEK_SET);

或使用下面的函数定义的文件开始:

rewind(fp);

可以到秒秒学上看看相关的内容,上面的课程讲解得可以的。


当前标题:c语言求文件大小的函数,c语言如何获取文件大小
文章源于:http://csdahua.cn/article/dsspjho.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流