繁体   English   中英

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

[英]Why Ctrl-Z does not trigger EOF?

为什么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

您需要按Enter 键,然后使用ctrl + Z再按Enter 键

或者,您也可以使用F6

EOF就像你使用它不是一个字符。 这是该流的状态。

我的意思是,哎呀,你甚至链接这个问题,所以你不妨阅读接受的答案

EOF 的基本形式是零长度读取。

这不是“EOF 字符”。

http://www.c-faq.com/stdio/getcharc.html引用了与您不同的情况,其中有人将getchar的返回值存储在char中。 潜在的问题仍然偶尔发生:不同的运行时为EOF整数实现不同的值(这就是我说它不是 EOF字符的原因),而且事情总是出错。 尤其是在不是“真正的”C 编译器而是具有兼容模式的 C++ 编译器的 Visual C++ 中,似乎事情可能会出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM