Подтвердить что ты не робот

"Нажать любую клавишу для продолжения" в C

Как создать пустую функцию, которая будет работать как "Нажмите любую клавишу для продолжения" в C?

Что я хочу сделать, это:

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
//The Void Function Here
//Then I will call the function that will start the game

Я компилирую с Visual Studio 2012.

4b9b3361

Ответ 1

Использовать стандартную библиотечную функцию C getchar(), getch() - функция boreland не стандартная.

используется только в окнах TURBO C.

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");  
getchar();    

вы должны нажать клавишу возврата здесь. для этого оператор printf должен нажать ENTER для продолжения.

если вы нажмете a, затем снова вам нужно нажать ENTER.
если вы нажмете ENTER, он продолжит нормально.

по этой причине это должно быть

printf("Let the Battle Begin!\n");
printf("Press ENTER key to Continue\n");  
getchar();    

Если вы используете окна, вы можете использовать getch()

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();   
//if you press any character it will continue ,  
//but this is not a standard c function.

char ch;
printf("Let the Battle Begin!\n");
printf("Press ENTER key to Continue\n");    
//here also if you press any other key will wait till pressing ENTER
scanf("%c",&ch); //works as getchar() but here extra variable is required.      

Ответ 2

Вы не говорите, какую систему вы используете, но поскольку у вас уже есть ответы, которые могут или не могут работать для Windows, я отвечу на POSIX-системы.

В POSIX ввод с клавиатуры происходит через нечто, называемое терминальным интерфейсом, который по умолчанию буферизует линии ввода до тех пор, пока не будет нажата кнопка "Ввод/Ввод", чтобы правильно работать с обратным пространством. Вы можете изменить это с помощью вызова tcsetattr:

#include <termios.h>

struct termios info;
tcgetattr(0, &info);          /* get current terminal attirbutes; 0 is the file descriptor for stdin */
info.c_lflag &= ~ICANON;      /* disable canonical mode */
info.c_cc[VMIN] = 1;          /* wait until at least one keystroke available */
info.c_cc[VTIME] = 0;         /* no timeout */
tcsetattr(0, TCSANOW, &info); /* set immediately */

Теперь, когда вы читаете из stdin (с помощью getchar() или любым другим способом), он немедленно возвращает символы, не дожидаясь Return/Enter. Кроме того, backspace больше не будет работать, вместо того, чтобы стирать последний символ, вы будете читать фактический символ обратного пробела на входе.

Кроме того, вы захотите восстановить канонический режим до выхода вашей программы, или неканоническая обработка может вызвать нечетные эффекты с вашей оболочкой или тем, кто вызывается вашей программой.

Ответ 3

Используйте getch():

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();

Альтернативой Windows должна быть _ getch().

Если вы используете Windows, это должен быть полный пример:

#include <conio.h>
#include <ctype.h>

int main( void )
{
    printf("Let the Battle Begin!\n");
    printf("Press Any Key to Continue\n");
    _getch();
}

P.S. как @Rörd отметил, что если вы находитесь в системе POSIX, вам нужно убедиться, что библиотека curses настроена правильно.

Ответ 4

Попробуйте следующее: -

printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();

getch() используется для получения символа с консоли, но не отображается на экране.

Ответ 5

Вы можете попробовать более независимый от системы метод: Система ( "пауза");