理解feof与EOF

Posted 平凡不简单

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解feof与EOF相关的知识,希望对你有一定的参考价值。

feof(feof msdn)

feof用于判断文件结尾。头文件<cstdio>。使用方法是feof(fp),fp为指向需要判断的文件的指针。如果不到文件结尾,返回0值;如果是文件结尾,返回非0.

使用feof判断文件结尾一定要非常注意以下一点:

假设文件包含10字节,并且你读取了十字节,调用feof函数,函数返回值均为0,这是因为尽管文件指针这时已经指向文件尾了,但是你没有试图越过文件尾读取数据,只有当你尝试了读取第十一个字节时,调用feof,函数才会返回0.

因此,使用feof常用的逻辑结构是先读在判断,如果先判断在读取,就会发生异常。

 

EOF(EOF c++ reference) 

c++ reference对其的讲解是:

“EOF是一个整数类型的宏定义,扩展为负数常量表达式(通常为-1)。

它被头文件<cstdio>中的好几个函数作为返回值使用,来表明已经到达文件尾或者示意一些其他的错误条件

它也被作为一个值来表示无效的字符。

在C++中,这个宏定义为char_traits<char>::eof().”

 

feof与EOF异同

具体参看 feof与EOF的用法

EOF通常用来判断文本文件的结尾,因为EOF的值为-1,ASCII都是字符型,不可能出现-1的情况。而在二进制文件中,信息以数值存放,使用EOF就可能会异常。

因此,通常使用feof来判断二进制文件的结尾。

 

以上是关于理解feof与EOF的主要内容,如果未能解决你的问题,请参考以下文章

关于EOF和feof()

chars eof啥用

关于读文件的结束的判别方法(EOF和feof)以及区别

fsockopen用feof读取http响应内容的一些问题

判断文件结束函数 feof

php文件操作函数feof函数使用方法