getch() e getche() não funcionam no ANSI

Publicado por Vicent Vega em 04/07/2004

[ Hits: 25.285 ]

 


getch() e getche() não funcionam no ANSI



Pessoal,

Essa é para quem está iniciando no GCC e já programou no Borland C.

O GCC não tem a biblioteca conio.h e as funções getch() e getche(). A saída é utilizar o getchar(), que é componente da stdio.h.
Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Limpando o buffer do teclado em C

Ocorrência de uma string em outra

Como executar um programa em C via Terminal [Vídeo]

Programando no Ubuntu - aplicações gráficas em C++ com Eclipse e Glade

Mais uma dica de curso de C e C++

  

Comentários
[1] Comentário enviado por tagallo em 24/09/2004 - 15:00h

o getchar le um caractere de forma diferente do getch
qdo vc digita um caractere com o getchar, ele imprime esse caractere na tela e espera por um outro caractere, no caso o que simbolisa o ENTER, dae entao ele salva o caractere que vc entrou na variavel que vc escolheu. o getch le o valor direto, sem precisar do enter e sem mostra-lo na tela, isso é util pra quando vc tem algo do tipo: precione uma tecla para continuar... sem o getch oq eu uso?
outra coisa que eu reparei no gcc + linux é que nao da pra usar a funcao system( "pause" ) do stdlib.h como vc usa no DOS, ficando assim sem uma boa forma de finalizar o programa... o que eu posso usar pra fazer isso no linux + gcc?

[2] Comentário enviado por jesusfreak em 06/12/2004 - 08:17h

soulripper, para parar seu programa você pode usar a função sleep(int n). E para ler um caracter sem imprimí-lo e sem esperar por ENTER leia essa dica aí: http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1663

[3] Comentário enviado por Sacred em 06/12/2004 - 19:55h

Então dá para pelo menos fazer o GCC ter o conio.h? Dá para a gente simplismente baixar o conio.h em algum lugar e colocar ele no diretório /usr/lib?

[4] Comentário enviado por marcelhb em 04/11/2005 - 21:25h

A equivalente conio.h no linux é a ncurses, ela possui o getch e outras funções...
Para maiores informações visitem : http://www.gnu.org/software/ncurses/ncurses.html
Abraços

[5] Comentário enviado por jochan em 14/12/2005 - 14:45h

Muito legal, vai me ajudar bastente no meu projeto de C++ ... =)

[6] Comentário enviado por dgpinheiro em 26/10/2006 - 17:59h

Prezado vicente,

Como vc sabe ainda necessitamos do "windows" para executar algumas tarefas, quando iniciei os meus estudos de linguagem de programação C, iniciei via windows. Utilizei como editor para criar os arquivos objetos o editor wscite e como compilador para criar os executáveis o gcc.

Nos meu programas, nunca tive problemas com a biblioteca conio.h

Gostei da sua dica.

Valeu!!!
dgpinheiro

[7] Comentário enviado por f_Candido em 10/09/2007 - 21:55h

Valeu pela dica. Mas aqui no VOL, tem uma implementação Legal da Conio.h, feito por um colega, e que dá uma portabilidade legal para os códigos.
Espero ter ajudado,
Abraços

[8] Comentário enviado por taynarodrigues em 18/04/2020 - 22:43h


[1] Comentário enviado por tagallo em 24/09/2004 - 15:00h

o getchar le um caractere de forma diferente do getch
qdo vc digita um caractere com o getchar, ele imprime esse caractere na tela e espera por um outro caractere, no caso o que simbolisa o ENTER, dae entao ele salva o caractere que vc entrou na variavel que vc escolheu. o getch le o valor direto, sem precisar do enter e sem mostra-lo na tela, isso é util pra quando vc tem algo do tipo: precione uma tecla para continuar... sem o getch oq eu uso?
outra coisa que eu reparei no gcc + linux é que nao da pra usar a funcao system( "pause" ) do stdlib.h como vc usa no DOS, ficando assim sem uma boa forma de finalizar o programa... o que eu posso usar pra fazer isso no linux + gcc?


A system(...)função em C pega um comando como string (que é uma matriz de caracteres em C) e o passa para o processador / shell de comando padrão do sistema operacional para executá-lo.

No Windows, isso seria feito por cmd.exe, que possui um comando interno pause que imprime algo como "Pressione qualquer tecla para continuar ..." e aguarda um evento do teclado antes de sair.
No entanto, felizmente, o Ubuntu não possui cmd.exe, mas usa sh aqui como seu shell padrão (que é dash internamente), que não possui um pause comando. Você pode usar algo assim:

read -p 'Press Enter to continue...' var

Portanto, no seu código C, a linha pode ser substituída por:

system("read -p 'Press Enter to continue...' var");

Isso tornaria seu programa executável apenas em sistemas Linux com sh shells compatíveis, porém, não funcionaria mais no Windows dessa forma.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts