none
Como fazer o c++ reconhecer o pressionar de uma tecla sem precisar pressionar enter em seguida? RRS feed

  • 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

    domingo, 26 de setembro de 2010 03:07

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);

    }

    quinta-feira, 13 de janeiro de 2011 18:08
  • 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
    sexta-feira, 25 de fevereiro de 2011 14:25

Todas as Respostas

  • Bom dia, experimente a função

    kbhit()

    if( kbhit() )
    {	
       x = getchar(); 
    }
    

    abraço 

    dTito



    hã?
    quarta-feira, 29 de setembro de 2010 13:37
  • 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);

    }

    quinta-feira, 13 de janeiro de 2011 18:08
  • 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
    sexta-feira, 25 de fevereiro de 2011 14:25