Usuário com melhor resposta
Como fazer o c++ reconhecer o pressionar de uma tecla sem precisar pressionar enter em seguida?

Pergunta
-
Como faço para um programa c++ saber que foi pressionada uma tecla, sem precisar pressionar <enter> em seguida para o programa continuar?
Atualmente quando vou ler do teclado, x = getchar(); , em seguida preciso teclar <enter> para o programa continuar.
Como faço para capturar, por exemplo, a tecla seta para frente ou para trás sem precisar em seguida pressionar a tecla <ENTER>?
Grata pela atenção
Respostas
-
Olá, eu estava com o mesmo problema...
getchar() também não funciona no C++, pois aceita uma linha inteira de caracteres, só terminando com ENTER, mesmo que só leia o primeiro caracter da linha.
A solução foi fazer o #include de conio.h , e usar a função getch() .
A função kbhit() só verifica se há alguma tecla no buffer de teclado, possibilitando fazer um loop para executar comandos enquanto não se pressionam teclas, por exemplo.
#include "conio.h"
int main()
{
char x;
printf("Digite um caracter : ");
x = getch();
printf("O caracter digitado foi %c.", x);
}
- Sugerido como Resposta Leonardo_Bos sexta-feira, 14 de janeiro de 2011 00:35
- Marcado como Resposta Harley AraujoModerator segunda-feira, 23 de maio de 2011 17:30
-
Se for uma aplicação Console:
http://msdn.microsoft.com/en-us/library/58w7c94c(VS.71).aspx
#include <conio.h>
#include <stdio.h>
int main( void )
{
/* Display message until key is pressed. */
while( !_kbhit() )
_cputs( "Hit me!! " );
/* Use _getch to throw key away. */
printf( "\nKey struck was '%c'\n", _getch() );
}
Fabio Galuppo- Marcado como Resposta Harley AraujoModerator segunda-feira, 23 de maio de 2011 17:30
Todas as Respostas
-
-
Olá, eu estava com o mesmo problema...
getchar() também não funciona no C++, pois aceita uma linha inteira de caracteres, só terminando com ENTER, mesmo que só leia o primeiro caracter da linha.
A solução foi fazer o #include de conio.h , e usar a função getch() .
A função kbhit() só verifica se há alguma tecla no buffer de teclado, possibilitando fazer um loop para executar comandos enquanto não se pressionam teclas, por exemplo.
#include "conio.h"
int main()
{
char x;
printf("Digite um caracter : ");
x = getch();
printf("O caracter digitado foi %c.", x);
}
- Sugerido como Resposta Leonardo_Bos sexta-feira, 14 de janeiro de 2011 00:35
- Marcado como Resposta Harley AraujoModerator segunda-feira, 23 de maio de 2011 17:30
-
Se for uma aplicação Console:
http://msdn.microsoft.com/en-us/library/58w7c94c(VS.71).aspx
#include <conio.h>
#include <stdio.h>
int main( void )
{
/* Display message until key is pressed. */
while( !_kbhit() )
_cputs( "Hit me!! " );
/* Use _getch to throw key away. */
printf( "\nKey struck was '%c'\n", _getch() );
}
Fabio Galuppo- Marcado como Resposta Harley AraujoModerator segunda-feira, 23 de maio de 2011 17:30