Ir ao conteúdo

Aplicação Em C


Diogo Cabral

Posts recomendados

Postado

Caros colegas,

gostaria de saber se existe uma maneira de bloquear algumas teclas.

EX: Se a aplicação trabalha com números, então só os numeros devem funcionar.

Fiz algo semelhante com a getche(), mas suponha que o usuario digitou errado e gostaria de apagar; nesse caso eu ainda não sei como proceder.

Alguma solução interessante?

Postado

Existem várias formas, mas tem que ver qual seria a mais adequada pra você.

você pode usar uma validação dos dados bem simples:

int n; //variável qualquer

do

{

n=getche();

} while(n!=0)&&(n!=1)&&(n!=2)&&(n!=3)&&(n!=4)&&(n!=5)

&&(n!=6)&&(n!=7)&&(n!=8)&&(n!=9));

//ou seja, enquanto não for número ele continuará lendo um novo número.

Mas o getche() tem um problema, só serve para um caracter, e se você quiser q sirva à qualquer número mesmo os acima de 9, deve alterar um pouco a lógica.

Mas existem muitas outras formas também.

Se este exemplo não resolveu o seu problema, fique à vontade em me escrever, mas seja mais específico, em sua pergunta.

Postado
Postado Originalmente por dtelaroli@07 mar 2004, 18:19

Mas o getche() tem um problema, só serve para um caracter, e se você quiser q sirva à qualquer número mesmo os acima de 9, deve alterar um pouco a lógica.

Mas existem muitas outras formas também.

Se este exemplo não resolveu o seu problema, fique à vontade em me escrever, mas seja mais específico, em sua pergunta.

Sim, eu sei q o getche() só serve para um caracter; acho que achei cheguei à solução interessante, acabei de conhecer a função isdigit() da biblioteca ctype.h ^_^

Só falta pegar o codigo da tecla backspace, para o caso do usuário digitar errado um número, e quiser apagar.

Amanhã eu vejo se consigo melhorar o código. :P

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

void main(){

int n,i=-1,col=1;

char *num;

clrscr();

do{

    do{

      gotoxy(col,1);

      clreol();

      n=getche();

      } while((!isdigit(n))&&(n!='\r'));

    i++;

    num=n;

    col++;

}while(num!='\r');

printf("\n%s",num);

getch();

}

Postado
#include <stdio.h>

#include <conio.h>

#include <ctype.h>

void main(){

int n,i=0,col=1;

char *num;

do{

    do{

      clrscr();

      printf("%s",num);

      gotoxy(col,1);

      clreol();

      n=getch();

      } while(((!isdigit(n))&&((n!='\r')||(i==0)))&&(n!='\b'));

    num=n;

    if((num!='\b')&&(num!='\r')){

col++;

i++;

}

    else

if(num=='\b'){

                          col--;

                          i--;

  }

}while(num!='\r');

printf("\n%s",num);

getch();

}

Agora sim acho que está bom! :P ... não tive tempo de tentar dar uma enxugada no codigo, se alguém conseguir diminuir ou tiver uma solução melhor, poste!!! ^_^

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!