Función “Presionar cualquier tecla para continuar” en C

¿Cómo creo una función de anulación que funcione como “Presionar cualquier tecla para continuar” en la Progtwigción en C?

Lo que quiero hacer es:

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 

Usar la función de biblioteca estándar de C getchar() , getch () es una función boreland no estándar.

Solo se utiliza en ventanas TURBO C.

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

Usted debe presionar la tecla de retorno aquí. para esto, la instrucción printf debe ser presionar ENTER para continuar.

Si presiona a, nuevamente debe presionar ENTER.
si presionas ENTER continuará normalmente.

por esta razón, debería ser

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

Si está usando Windows entonces puede usar 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. 

No dice qué sistema está utilizando, pero como ya tiene algunas respuestas que pueden o no funcionar para Windows, responderé por los sistemas POSIX.

En POSIX, la entrada del teclado viene a través de algo que se llama una interfaz de terminal, que de manera predeterminada almacena las líneas de entrada hasta que se pulsa Retorno / Entrar, para tratar adecuadamente el retroceso. Puedes cambiar eso con la llamada tcsetattr:

 #include  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 */ 

Ahora, cuando lea desde stdin (con getchar() , o de cualquier otra forma), devolverá los caracteres inmediatamente, sin esperar un Retorno / Ingresar. Además, el retroceso ya no funcionará: en lugar de borrar el último carácter, leerá un carácter de retroceso real en la entrada.

Además, querrás asegurarte de restaurar el modo canónico antes de que salga tu progtwig, o el manejo no canónico puede causar efectos extraños en tu shell o quien haya invocado tu progtwig.

Utilice getch() :

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

La alternativa de Windows debería ser _getch () .

Si estás usando Windows, este debería ser el ejemplo completo:

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

Como lo señaló @ Rörd , si está en el sistema POSIX, debe asegurarse de que la biblioteca de curses esté bien configurada.

Prueba esto:-

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

getch() se usa para obtener un carácter de la consola, pero no hace eco en la pantalla.