Nuestros investigadores estrellas han agotado sus provisiones de café, investigando todo el tiempo por la respuesta, hasta que Manuel encontró la contestación en Gogs y ahora la compartimos con nosotros.
Solución:
Utilice la función de biblioteca estándar de C getchar()
en lugar de getch()
no es una función estándar, y la proporciona Borland TURBO C solo para MS-DOS / Windows.
printf("Let the Battle Begin!n");
printf("Press Any Key to Continuen");
getchar();
Aquí, getchar()
espera que presione el retorno key entonces el printf
la declaración debe ser press ENTER to continue
. Incluso si presionas a otro key, aún necesita presionar ENTER:
printf("Let the Battle Begin!n");
printf("Press ENTER key to Continuen");
getchar();
Si está utilizando Windows, puede utilizar getch()
printf("Let the Battle Begin!n");
printf("Press Any Key to Continuen");
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 Continuen");
//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á usando, pero como ya tiene algunas respuestas que pueden o no funcionar para Windows, responderé para los sistemas POSIX.
En POSIX, la entrada del teclado viene a través de algo llamado interfaz de terminal, que por defecto almacena en búfer las líneas de entrada hasta que se pulsa Retorno / Intro, para tratar correctamente el retroceso. Puede 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 leas de stdin (con getchar()
, o de cualquier otra forma), devolverá los caracteres inmediatamente, sin esperar un Retorno / Intro. 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á asegurarse de restaurar el modo canónico antes de que salga su programa, o el manejo no canónico puede causar efectos extraños con su shell o con quien haya invocado su programa.
Usar getch()
:
printf("Let the Battle Begin!n");
printf("Press Any Key to Continuen");
getch();
La alternativa de Windows debería ser _getch ().
Si está 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 Continuen");
_getch();
PD, como señaló @ Rörd, si está en el sistema POSIX, debe asegurarse de que la biblioteca de curses esté configurada correctamente.
Te mostramos comentarios y puntuaciones
Finalizando este artículo puedes encontrar las notas de otros usuarios, tú asimismo puedes dejar el tuyo si te apetece.