C语言文件读写-判断文件是否结束
在读文件的时候,很重要的一个条件是:文件是否结束,因为文件已经结束了,就不用继续读文件了。
判断文件结束,有许多方式,比如读取文本文件和二进制文件就可以使用不同的方式,下面分别进行详细介绍和举例。
使用EOF判断文件是否结束
EOF的值为-1,所以往往使用EOF也可以判断文件是否结束,一般用在非格式化文本文件读取中,如果在格式化文本读取时使用EOF来判断,在某些情况下是会出错的。
函数fgetc返回的值为一个字符,当文件结束时,返回EOF,因为文本文件中可打印字符没有字符的值是-1,所以,可以用EOF来判断文件是否结束了。
这也是唯一的一个可以使用EOF来判断文件是否结束,而且永远正确的函数,前提是必须是读文本文件(格式化或者非格式化都可以支持)。
我们来看一下使用fgetc和EOF来检测文件是否结束的例子,代码如下:
void EOF_test_getc(const char* file_name)
{
int ch = 0;
int count = 0;
FILE *file = fopen(file_name,"r");
if(!file)
return;
while(1)
{
ch = fgetc(file);
if(ch == EOF)
{
printf("reach the end of file,the char number is %d\n",count);
break;
}
else
{
count++;
putchar(ch);
}
}
fclose