函数原型:
int feof ( FILE * stream );
头文件:
#include <stdio.h>
参数:
stream
FILE结构的指针。指向一个文件流对象的指针。例如:
FILE * fp = fopen("test.ini");
fp 即这个指向文件流test.ini 的指针。可以作为feof函数的参数。
feof(fp);
返回值:
如果文件结束符被设置,则返回非0值,否则返回0。
即如果 feof(fp) == 0 ,说明还没到文件的结尾。
而如果 feof(fp) != 0 , 说明文件指针已经读取越过了EOF,文档已经到结尾。
函数说明:
EOF(End Of File)文件结束符,它的意思是,文档的结尾都有一个隐藏字符”EOF”,当程序读取它的时候,就会知道文件已经到达结尾。通常使用while循环加EOF判断作为读取结束的标志。
EOF 是一个宏定义,它的值通常为 -1,但它依系统有所不同。
feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。
feof是判断文件指针是否越过(或者叫读取)了EOF标记。
通过调用如下函数 clearerr, rewind, fseek, fsetpos or freopen 可以清空feof 的文件指针。或者重新打开文件,也会重新设置文件指针。
例子:
1,获取文件的字符个数。读取文件myfile.txt, 并一个个的读取里面的字符,当遇到EOF时则停止。输出字符个数。
/* feof example: byte counter */
#include <stdio.h>
int main ()
{
FILE * pFile;
int n = 0;
pFile = fopen ("myfile.txt","rb");
if (pFile==NULL) perror ("Error opening file");
else
{
while (fgetc(pFile) != EOF) {
++n;
}
if (feof(pFile)) {
puts ("End-of-File reached.");
printf ("Total number of bytes read: %d\n", n);
}
else puts ("End-of-File was not reached.");
fclose (pFile);
}
return 0;
}
参考资料:
1, 网址:http://www.cplusplus.com/reference/cstdio/feof/?kw=feof