getch em C

1. getch em C

vinicius
vinicius_souza

(usa Ubuntu)

Enviado em 11/12/2012 - 15:23h

Pessoal,
Eu estou tentando usar o getch para pegar o caractere digitado para eu poder fazer uma comparacao, estou compilando esse cód.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main(){
int ch;
ch=getch();
if (ch == 72)
printf("Acima\n");
printf("%d",ch);
}

coloquei apenas a opção acima para testar.
Na saida do programa coloquei um "printf" para me mostrar o que ele gravou, só que se eu apertar a seta para cima, baixo ou pros lados, ele sempre grava 224 e eu não estou conseguindo fazer a comparação.
Alguem pode me ajudar com o cód ou me mostrar uma outra forma de fazer?
Att:Vinícius


  


2. Re: getch em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/12/2012 - 15:34h

ConIO... Vamos recorrer aos alfarrábios dos Turbo C (lá se vão 23 anos!)...

As setas e outras teclas especiais geram dois bytes. Se o primeiro byte tiver um certo valor (224, pelo que você falou; minha memória me dizia que era zero, no antigo Turbo C), você deve chamar a função novamente para pegar o segundo byte gerado, só então tratá-lo como uma tecla especial.


3. Re: getch em C

vinicius
vinicius_souza

(usa Ubuntu)

Enviado em 11/12/2012 - 15:59h

OK funcionou dessa forma
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main(){
int ch;
ch=getch();
ch=getch();
if (ch == 72)
printf("Acima\n");
printf("%d",ch);
}

só que as setas eu aperto uma vez e vai e o enter e o esc duas vezes para funcionar.
é assim mesmo


4. Re: getch em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/12/2012 - 16:17h

Como eu disse antes, verifique o valor do primeiro byte. Se for 224, aí então você lê o segundo byte e o trata de modo especial. Se for qualquer coisa diferente, você trata como uma tecla comum.


5. Re: getch em C

vinicius
vinicius_souza

(usa Ubuntu)

Enviado em 11/12/2012 - 16:50h

paulo1205 escreveu:

Como eu disse antes, verifique o valor do primeiro byte. Se for 224, aí então você lê o segundo byte e o trata de modo especial. Se for qualquer coisa diferente, você trata como uma tecla comum.


Ok funcionou só que se o primeiro é 224 eu leio o segundo se o primeiro for por exemplo 27 o segundo seria o que?


6. Re: getch em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/12/2012 - 00:33h

Nada. As teclas que representam caracteres do ASCII produzem tão somente um byte, que é o próprio código ASCII (de 0 a 127) do símbolo representado nessa tecla.

Agora, isso era assim na época do teclado americano. Eu não sei qual código produziria um C-cedilha ou um símbolo como "§", que não fazem parte do ASCII.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts