为什么 Ctrl + Z 不会触发循环来完成以下小程序?
#include <stdio.h>
main()
{
int c;
while ((c = getchar()) != EOF)
{
//nothing
}
return 0;
}
如果我输入:test^ZEnter
,它就不会离开循环。
我在(here和here)周围找到了相关问题,但没有在Windows下解释C(不是C ++)。
注意:我在Windows 8.1上使用Visual Studio 2015 PRE
答案 0 :(得分:3)
你需要按 Enter ,然后使用 ctrl + Z 然后再次输入。
或者,您也可以使用 F6
答案 1 :(得分:-2)
EOF
就像你使用它不是一个角色。这是该流的状态。
我的意思是,哎呀,你甚至链接了这个问题,所以你也可以read the accepted answer:
EOF的基本形式是零长度读取。
这不是“EOF角色”。
http://www.c-faq.com/stdio/getcharc.html引用了与您不同的案例,其中某人将getchar
的返回值存储在char
中。基本问题偶尔会出现:不同的运行时为EOF
整数实现不同的值(这就是为什么我说,它不是EOF 字符)和事物喜欢出错。特别是在Visual C ++中,它不是一个“真正的”C编译器,而是一个具有兼容模式的C ++编译器,看起来事情可能会出错。