C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在C语言中就比较麻烦,例如获取一个文件的大小。许多语言都可以直接调用函数解决,C语言中却没有直接对应的函数获取文件大小,下面介绍一个简单的方法。
代码如下:
int main()
{
char filename[100];
FILE *fp=fopen(filename,“r”);//filename为要打开的文件名,r为打开文件格式
//新版本中打开文件fopen_s(&fp,filename,“r”);
if(!fp) return -1;
fseek(fp,0L,SEEK_END);//fseek为库函数,SEEK_END定位到文件结尾
int size=ftell(fp);//ftell为库函数
fclose(fp);//文件关闭
printf(“文件大小为%d个字节”,size);
return 0;
}
这种方法是通过fseek把文件指针移动到末尾,再通过ftell函数读取文件大小,由于ftell的返回值为long,所以字节数不能超过long的取值,一般情况下文件不能超过2G大小,否则就会出错。
如果文件比较大的情况下,可以通过fsetpos和fgetpos获取文件大小。最致命的缺陷就是它需要加载文件到内存,然后跳转到文件末尾,这个操作非常耗时!