判断文件结尾的方法(feof函数和EOF)

当以文本方式读写文件时,可以用EOF判断文件是否结尾,因为EOF=-1,而字符的ASCII码不可能为负数。
例如,当fp为文本方式读取的指针时

getc(fp)!=EOF

可判断是否读到文件结尾

当以二进制方式读写文件时,只能用feof函数判断,因为二进制读取数值,可能为负。
feof函数原型为

int feof(FILE *stream)

当未读到结尾时,返回值为0,读到结尾时,返回值为1

feof不仅适用于二进制打开,文本方式打开也适用

注意:只有读出所有的数据之后,再读一次,函数feof(fp)的返回值才为真
因此,当要统计文件大小时,sizef应该-1

int sizefile(FILE *fp)
{
int sizef=0;
while(!feof(fp))
{
fgetc(fp);
sizef++;
}
rewind(fp) //使得文件指针重新指向开头
return sizef-1;
}

你可能感兴趣的:(C/C++)