当我不使用getch()时为什么输出只是闪烁?

时间:2013-04-15 14:39:18

标签: c windows dev-c++ getch

当我在Dev C ++中编译并运行以下代码时,

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

输出刚刚闪烁。当我添加getch时,它会保留。

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

为什么会这样?

2 个答案:

答案 0 :(得分:3)

getch()会导致程序在终止之前等待用户输入。 Win32控制台应用程序的一个令人不快的事情是,一旦程序终止,控制台就会关闭(因此它只是闪烁)。

Win9x下的旧DOS程序不是这种情况(默认情况下控制台会保持打开状态,除非在DOS快捷方式属性中选中了复选框)。

如果在命令提示符下运行程序的两个版本,您将看到第二个版本仅在您按下某个键后返回到提示符。

答案 1 :(得分:1)

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