EOF(End of File),是ASCII码中的替换字符(Control-Z,代码26)。
EOF不是特殊字符,而是定义在<stdio.h>中的一个常量,一般等于-1。#define EOF (-1)
以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
验证布尔表达式getchar()!=EOF的值是0还是1
#include <stdio.h>
//验证布尔表达式getchar()!=EOF的值是0还是1
int main()
{
int c;
c = getchar() != EOF;//相当于(c = (getchar() != EOF))
printf("%d\n",c);
return 0;
}
输入EOF的方式是Ctrl+Z(在Linux系统下,利用快捷键`ctrl+d`;在windows下用`ctrl+z`,就可以输入文件结束标志EOF了。 )
问题来了: 如果真的想输入Ctrl-D怎么办?这时必须先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号。Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了。
输入字符串:1234567890 1 Press any key to continue
输入空格: 1 Press any key to continue
输入制表符: 1 Press any key to continue
输入换行符,直接点击Enter即可 : 1 Press any key to continue
总结:除Ctrl + Z结果为0,其余全部是1,说明EOF是Ctrl+Z方式输入的。
打印EOF值
符号常量EOF是在头文件<stdio.h>中定义的,在win系统中EOF被定义为-1,在其他系统中可能被定义为其他的值。
这正是使用EOF等标准符号常量能够增加程序可移植性的重要原因。