Pular para o conteúdo

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

Dica publicada em C/C++ / Introdução
Vicent Vega vvega
Hits: 27.717 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Curso de C online

Função clrsc() no devC++

Cursos de C/C++ e outros

Declaração de variáveis em C

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

#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?
#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?
#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

Entre na sua conta para comentar.