Почему вывод просто мигает, когда я не использую getch()?

Когда я компилирую и запускаю следующий код в Dev C++,

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

Выход просто мигает. Когда я добавляю getch, он остается.

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

Почему это происходит?


person Daniel_V    schedule 15.04.2013    source источник
comment
Вы знаете, что делает getch?   -  person devnull    schedule 15.04.2013
comment
Он получает ввод от пользователя. Не так ли?   -  person Daniel_V    schedule 15.04.2013
comment
Так ты знаешь ответ, не так ли?   -  person devnull    schedule 15.04.2013


Ответы (2)


getch() заставляет вашу программу ждать ввода данных пользователем, прежде чем она завершится. В консольных приложениях Win32 раздражает то, что консоль закрывается, как только программа завершается (поэтому она просто мигает).

Этого не было со старыми программами DOS под Win9x (где консоль оставалась открытой по умолчанию, если не был установлен флажок в свойствах ярлыка DOS).

Если вы запустите обе версии своей программы в командной строке, вы увидите, что вторая возвращается к командной строке только после того, как вы нажмете клавишу.

person Medinoc    schedule 15.04.2013

Ваша консоль исчезает, потому что это сделано, и программа закрывается. Как вы видите, использование getch() для ожидания ввода предотвращает выход из программы, но оно не является переносимым, в качестве альтернативы вы можете использовать std::cin.get(), это немного отличается, поскольку вам нужно нажать Enter.

person Shafik Yaghmour    schedule 15.04.2013