#  > Desenvolvimento >  > Linguagens de Programação >  >  função getch() getchar()

## fabiomogi

Ola pessoal ....

estou tendo problemas...com a função getch() e getchar()! Essas funções teriam q me retornar a tecla pressionada...! mas estou tendo problemas pq eu digito a tecla e ainda preciso pressionar o ENTER! existe alguma outra função q me retorne a tecla pressionada sem a necessidade de paertar a tecla ENTER

por exemplo:

# include <stdio.h>

int main (void)
{
char c;

c=getchar();
printf("%c",c);

return 0;
}

um codigo simples desse onde eu soh precisaria pressionar uma tecla qualquer ...acabo precisando apertar a tecla Enter tb....se alguem poder ajudar...

Obrigado....

[]'s

----------


## SDM

vix cara...eu nao tenho certesa....mas acho q vc vai ter q ler a stdin usando o read....pq por padrao essas funcoes soh leem linhas e nao teclas.....ou seja....vc vai ter q abrir a stdin (ou o teclado) usando o open e depois ler usando o read....eh moh trampo...soh sei na teoria....como q aplica isso eu nao sei nao....

aaa menos eh claro q vc esteja usando uindous....dai tem uma tal de conio.h q tem uma funcao q eu nao lembro o nome q faz isso....

----------


## a2gs

fala ai cara, blz?

Nao tenho nenhum exemplo aqui, e nem um site de cabeça q tenha isso, mas vc tera q usar a funcao ioctl(2) e colocar o descritor (FILENO_STDIN) no modo non-canionical (o controle dos bytes ficam por sua conta, nao ha um pre-processamento. Vc pode ate escolher em nao ecoar os chars pra tela e outras maluquices de baixissimo nivel possivel).

(pra variar, uma otima referencia eh o 'Advanced Programming in the Unix Environment' do R. Stevens. TEM ISSO LA, se vc tiver a chance de arrumar o livro.....)

mas isso pode te ajudar com mais facilidade: termios(3).

falow ai.

----------


## jweyrich

char ckey;
scanf("%c", &ckey);

----------


## SDM

> char ckey;
> scanf("%c", &ckey);



aki num funciono nao cara....o scanf acho q le a entrada ate aperta enter...o q ele quer eh q quando o cara aperte qq tecla q ele ja faca alguma coisa...(eh isso neh??)

----------


## jweyrich

Argh, é verdade.. 
Bãã. Faz tempo que não uso essas coisas. Mas tá ai um exemplo de como fazer isto...

http://www.cs.unc.edu/~taylorr/musicbox/src/termio.C

----------


## smeagol_br

olha so.. a funcao getch() esta na biblioteca conio.h....
vc ta abrindo apenas a stdio.h

faz assim...

#include<stdio.h>
#include<conio.h>



............


flws !

----------


## fabiomogi

E ai pessoal...valeu pelo interesse...

....o problema eh q naum posso usar conio.h! ela naum definida pelo padrão ANSI C, se eu naum me engano ela eh da Borland! Por isso a conio.h nem vem no pacote de bibliotecas do gcc! existe algo como getchar()...mas tb preciso apertar enter! Fora q preciso q a função leia caracteres especiais como .: as setas cima, baixo, esquerda,direita ...F1, F2...e assim por diante...!

quem tiver alguma ideia....ou sober de alguma função desenvolvida...por alguem...ajudaria muito...

Valeu....Fuiiiii!

----------


## a2gs

#man 3 termios
dentro do man, procure por "canonical" e/ou "raw mode".
Ou entao vc le o programa q ph0enix postou, q mexe exatamente com isso.
De boa, a "funcao desenvolvida por alguem" q vc procura eh o termios(3). Mais q isso, soh se eu pedir pra vc postar o problema pra nós do forum resolver/programar... e espere por isso ate 2020! (nao damos o peixe, mas temos prazer em ensinar a pescar).

falow!

----------


## fabiomogi

E ai pessoal...blz

Valeu pela força ....os toques foram de muita ajuda...

[]'s

----------

