2013-04-15 64 views
1

当我编译和在开发的C++运行下面的代码,为什么当我不使用getch()时输出刚刚闪烁?

#include <stdio.h> 
main() 
{ 
    printf("Hello world!"); 
} 

输出只是闪烁。当我添加getch时,它保持不变。

#include <stdio.h> 
main() 
{ 
    printf("Hello world!"); 
    getch(); 
} 

为什么会发生这种情况?

+0

你知道什么是'getch'呢? – devnull

+0

它从用户获得输入。不是吗? –

+0

所以你知道答案,不是吗? – devnull

回答

3

getch()使你的程序等待用户输入在终止前。 Win32控制台应用程序令人气愤的是,控制台在程序终止后立即关闭(因此它只是闪烁)。

对于Win9x下的旧DOS程序(其中控制台默认保持打开状态,除非在DOS快捷方式属性中选中复选框),情况并非如此。

如果您在命令提示符中运行了这两个版本的程序,则会看到第二个只在您按下某个键后才返回到提示。

1

您的控制台正在消失,因为它完成,程序正在退出。正如你看到使用getch()等待输入阻止程序退出但它不是便携式的,作为替代方案,您可以使用std::cin.get(),这是稍微不同的,因为您需要按Enter键。

相关问题