调用fread读取数据时,如果返回值小于参数nmemb所指定的值,表示发生了错误或者已经到了文件末尾(end-of-file),但fread无法具体确定是哪一种情况。在这种情况下,可以通过判断错误标志或end-of-file标志来确定具体的情况。
1.feof
用于检查stream所指文件的end-of-file标志是否存在。
1)头文件
#include <stdio.h>
2)函数原型
int feof(FILE *stream);
3)参数
stream:表示指定的文件。
4)返回值
如果返回一个非零值,表示设置了end-of-file标志;如果end-of-file未设置,则返回0。
2.ferror
用于检查stream所指文件的错误标志是否存在。
1)头文件
#include <stdio.h>
2)函数原型
int ferror(FILE *stream);
3)参数
stream:要读取的文件。
4)返回值
如果返回一个非零值,表示设置了错误标志;如果错误未设置,则返回0。
3.clearerr
用于清除end-of-file和错误标志,当调用feof或ferror校验这些标志后,通常需要清除这些标志,避免下次校验时使用到的是上一次设置的值,此时可以手动调用clearerr函数清除标志。
1)头文件
#include <stdio.h>
2)函数原型
void clearerr(FILE *stream);
3)参数
stream:要读取的文件。
4)返回值
无。
467