Ale*_*lex 6 c eof getchar visual-c++
为什么Ctrl+Z在下面的小程序中没有触发循环完成?
#include <stdio.h>
main()
{
int c;
while ((c = getchar()) != EOF)
{
//nothing
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我输入:test^ZEnter,它不会跳出循环。
我发现了相关问题(此处和此处),但没有一个问题可以解释 Windows 下的 C(而不是 C++)。
注意:我在 Windows 8.1 上使用 Visual Studio 2015 PRE
Mar*_*ler -4
EOF就像你使用的那样,它不是一个字符。这是该流所处的状态。
我的意思是,哎呀,您甚至链接了这个问题,所以您不妨阅读已接受的答案:
EOF 的基本形式是零长度读取。
它不是“EOF 字符”。
http://www.c-faq.com/stdio/getcharc.html引用了与您不同的情况,其中有人将 的返回值存储getchar在char. 潜在的问题仍然偶尔发生:不同的运行时为EOF 整数实现不同的值(这就是为什么我说,它不是 EOF字符),并且事情很容易出错。特别是在 Visual C++ 中,它不是“真正的”C 编译器,而是具有兼容模式的 C++ 编译器,似乎可能会出错。