#include<stdio.h>
int main()
{
int ch = 0;
while((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
我们输入字符,会发现该程序并不会像往常那样结束,会一直执行下去,形成死循环,原因在于,getchar()函数获取的是int整型(ASCII码),但是我们通过下面的代码可知,EOF所对应的值是-1,但ASCII码值中并没有-1所对应的字符,这就导致了死循环的无法结束。还有一种说法好像是编译器会自动去分别打印“E”,“O”,“F”三个字符而非同时输出“EOF”。
#include<stdio.h>
int main()
{
printf("%d\n",EOF);
return 0;
}
解决办法是这样的:
Windows系统:ctrl键+z;
linux:ctrl键+d;
mac:control键+d ;