Guest Kojak Postado Abril 10, 2006 Denunciar Share Postado Abril 10, 2006 Boa tarde!tenho uma leitura de um char, vamos supor que a pessoa digite: "1"ta td bem...mas ele pode digitar 123 e isso aparece na tela. , apesar de o computador aceitar so o primeiro numero e o programa estar funcionando.Quero que ao entrar, so aceite 1 caracter e quando a pessoa digitar o proximo caracter, anule a tecla.Espero que tenha conseguido passar a msg pra vocês!Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 edu. Postado Abril 10, 2006 Denunciar Share Postado Abril 10, 2006 Eu fiquei com essa mesma dúvida uns dias atrás.O que você tem que fazer é o seguinte:Use o getchar apropriado do seu compilador (getch, getchar, ou getche, no meu caso, é o getche() ), que recebe a entrada de apenas um caracter, como no exemplo:char caracter[10]; for (int i = 0; i < 10; i++) { caracter[i] = getche(); } Nesse exemplo, ele vai esperar entrada de 10 caracteres, que você digitar, ou seja, cada vez que você apertar uma tecla, ela vai ser mandada imediatamente para o caracter. Para permitir a entrada só de um, faça uma limitação: char caracter[10]; for (int i = 0; i < 10; i++) { caracter[i] = getche(); // Recebe um dígito if (i == 1) // No segundo dígito... { if(caracter[i] == 0x0d) { // Se for ENTER (0x0d em hexadecimal é enter) cout << "correto"; // Correto! break; // sai do for.. } // se não... else { cout << "errado"; // Errado :( break; // sai do for } } } Nesse código ele sempre vai decidir o que fazer no segundo digito. Depois é só adequar o código ao que você quer e pronto. Qualquer dúvida, só responder. O GRANDE problema de usar essa maneira, é que se você quiser apagar um dígito, ele vai receber a tecla backspace no getche(), e vai contar como um caracter e não como um comando. Para evitar isso, você vai ter que usar if (caracter == 8) // sendo 8, backspace em decimal. E manualmente fazer ele apagar um caracter. Com certeza deve ter outras maneiras de fazer isso, mas essa é a que eu sei. Lendo com mais atenção seu post, você pode fazer isso simplesmente assim: char caracter[10]; char numero; cin >> caracter; // tudo o que você digitar vai pra o caracter numero = caracter[0]; // apenas o primeiro dígito vai para um char numero cout << numero; // imprime char numero Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Kojak Postado Abril 10, 2006 Denunciar Share Postado Abril 10, 2006 #include <stdio.h>#include <conio.h>main(){ char c; printf("digite opcao:"); scanf("%c", &c); switch©{ case '1': printf("ola"); break; default: printf("opcao invalida"); } getch(); } aki esta o prog. , ele tem a leitura de um só char...o usuario pode entrar com 123 e o comp. entende que é opcao 1.Porem quero que ao digitar o 2 e o 3 anule a tecla que o usuario digitou, ou que ao apertar a primeira tecla (o 1 no caso), não deixe que ele entre com mais numeros...Agradeço a ajuda, mas eu quero trabalhar com 1 char e não com um vetor de chars... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FibraOptica Postado Abril 14, 2006 Denunciar Share Postado Abril 14, 2006 Use getch() para ler o caracter, ao invés de scanf().Serve? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Kojak
Boa tarde!
tenho uma leitura de um char, vamos supor que a pessoa digite: "1"
ta td bem...
mas ele pode digitar 123 e isso aparece na tela. , apesar de o computador aceitar so o primeiro numero e o programa estar funcionando.
Quero que ao entrar, so aceite 1 caracter e quando a pessoa digitar o proximo caracter, anule a tecla.
Espero que tenha conseguido passar a msg pra vocês!
Obrigado
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.