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