当以文本方式读写文件时,可以用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;
}
本文介绍了在文本和二进制方式下读取文件时如何判断文件结束的方法。对于文本方式,可以利用EOF来判断;而对于二进制方式,则推荐使用feof函数。此外,文章还提供了一个统计文件大小的示例函数。
4328

被折叠的 条评论
为什么被折叠?



