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