Ir para conteúdo
Fórum Script Brasil
  • 0

Aceitar 1 Só Caracter E Anular Outras Teclas


Guest Kojak

Pergunta

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

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

#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...

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...