计算文件长度/大小的方法:
方法 1:
infile=fopen(infilename,"rb");
if (!infile) {
printf(" *** Error opening input file %s ***n", infilename);
return -1;
}
/* caculate the file length(bytes) */
chr=fgetc(infile);
while(chr!=EOF){
++file_len;
chr=fgetc(infile);
}
缺点:计算速度太慢,而且如果文件稍微大些,其值可能溢出。
方法2:【推荐】通过fseek()和ftell()来获得文件大小
infile=fopen(infilename,"rb");
if (!infile) {
printf(" *** Error opening input file %s ***n", infilename);
return -1;
}
/* caculate the file length(btyes) */
/* 标识符 数值 代表的起始点
SEEK_SET 0 文件开始
SEEK_END 2 文件末尾
SEEK_CUR 1 文件当前位置 */
//fseek(infile,0,2);
fseek(infile,0,SEEK_END);
file_len=ftell(infile);
优点:速度快。
方法3:
#include <sys/stat.h>
if (fstat(STDIN_FILENO, &stat) == -1 || stat.st_size == 0)
return ;
file_len=stat.st_size;
整理自: