判断文件结束的正确机制

来源:互联网 发布:淘宝音响精品推荐 编辑:程序博客网 时间:2024/05/21 12:44

判断文件结束的正确机制应该是这样的:

那些具有读取功能的函数,在读入文件的最后一个字节(Last Byte)之后,如果不再继续读,那么程序无从判断文件是否结束;只有在读入最后一个字节之后再继续试图读取时,管理磁盘文件的操作系统才会设置一个非0的错误码(Error Code)。而ferror()feof()等函数是依据这个错误码来判断文件操作方面出现了什么错误以及文件是否结束。无论是文件操作、内存分配还是网络通信,这种判定错误的机制是非常普遍的。

注意:

1.      fgets()返回NULLfscanf()返回EOF时,都表示读取出错;在这种情况下,才需要用feof()ferror()指示究竟是什么错误。

2.      对于fgets,gets在出错和到达文件末尾都是返回NULL

3.      scanf,fscanf,sscanf在出错和到达文件尾都是返回EOF,用feof只是为了知道到底是不是因为到了文件末尾.

4.      FILE其实是一个结构体,里面包含里文件描述符、缓冲区指针、缓冲区长度、缓冲区内当前字符数和出错标准等等。

5.      feof的实现有的是用宏,其实就是去检查FILE结构里的_flags字段。