getch() no linux

1. getch() no linux

Carlos Fagiani Junior
TeraByteS

(usa Slackware)

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?


  


2. Re: getch() no linux

White Hawk
WhiteHawk

(usa Ubuntu)

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

Carlos Fagiani Junior
terabytes

(usa Slackware)

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

White Hawk
WhiteHawk

(usa Ubuntu)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts