Pular para o conteúdo

getch() no linux

Responder tópico
  • Denunciar
  • Indicar

1. getch() no linux

Enviado em 03/06/2012 - 15:59h

estou tentando usar getch() no linux, uso a biblioteca curses.h (e conio.h no windows).

Para compilar uso o "gcc teste.c -lncurses -o teste", compila legal, só que passa direto pelo getch(), sem eu digitar nada...



#include <curses.h>
void main() {
char ch;
printf("Digite algo.\n");
ch = getch();
printf("-->");
putchar(ch);
printf("\n");
}
Alguém sabe o porque?

Responder tópico

2. Re: getch() no linux

Enviado em 03/06/2012 - 18:29h

Olá.

No Linux, costumo utilizar a função getchar ao invés da getch. O problema que impede o seu código de funcionar é a sujeira do buffer. Para limpá-la, faça as seguintes alterações:


#include <stdio.h>
#include <stdlib.h>
#include <curses.h>

void main() {
char ch;

printf("Digite algo.\n");
__fpurge(stdin);
ch = getch();
printf("-->");
putchar(ch);
printf("\n");

return(0);

}

3. Re: getch() no linux

Enviado em 06/06/2012 - 10:27h

Para usar o getch() no linux foi dificil de achar mas é fácil de implementar...

no linux tem que compilar com o comando

$ gcc programa.c -lncurses -o programa


#ifndef _WIN32
#include<curses.h> //Biblioteca para linux
#else
#include <conio.h> //Biblioteca para windows
#endif

void main() {
char ch;
printf("Digite algo.\n");
ch = getch();
printf("-->");
putchar(ch);
printf("\n");
}
Assim funciona o getch() tem q usar o __fpurge(stdio) pq sem ele fica pegando a sujeira do buffer.

pena q __fpurge(stdio) e fflush(stdio) são para OS específicos... Mas isso é outro caso a ser tratado...

4. Re: getch() no linux

Enviado em 08/06/2012 - 18:33h

Problema solucionado? Em caso afirmativo, por favor marque o tópico como resolvido e selecione a melhor resposta.

Até mais.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder