首先我们要了解”EOF“指令在C语言中的定义:在C语言中,或更精确地说成C标准函式库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。其值为-1
再来看其在C语言中的应用:首先对于这个程序
int main()
{
int n;
while (scanf("%d", &n) )
{
}
return 0;
}
如果不加!=EOF会陷入死循环
加入了!=EOF后,当scanf函数的返回值为-1时循环截止。但是当在scanf函数中输入一个数据时其返回值为1,输入第二个数据时其返回值为2。都不等于-1,那么while循环也就会一直进行。那么什么时候可以终止循环呢?当我们输入完一个数据之后按下键盘上的CTRL+Z循环便会终止。通过EOF的使用我们输入多组数据且不会担心死循环问题。
而~scanf()的作用类似于scanf!=EOF。