为什么Ctrl-Z不会触发EOF?

时间:2015-07-07 06:41:00

标签: c visual-c++ eof getchar

为什么 Ctrl + Z 不会触发循环来完成以下小程序?

#include <stdio.h>

main()
{
    int c;
    while ((c = getchar()) != EOF)
    {
        //nothing 
    }

    return 0;
}

如果我输入:test^ZEnter,它就不会离开循环。

我在(herehere)周围找到了相关问题,但没有在Windows下解释C(不是C ++)。

注意:我在Windows 8.1上使用Visual Studio 2015 PRE

2 个答案:

答案 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 ++编译器,看起来事情可能会出错。