• 0
Sign in to follow this  
tahinf

verificar se não é caracter

Question

Boa tarde!

estou fazendo um trabalho da facul e nele o numero digitado é float, queria fazer algo pra não deixar o usuário digitar caracter ou fazer q apareça alguma msg de erro porque quando digita ele dá erro (claro né)

obs: o programa tá funcionando certinho, só queria deixar mais certinho ^^

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Poste ai o que conseguiu fazer, para facilitar o entendimento....

Edited by Binder

Share this post


Link to post
Share on other sites
  • 0

Olha, para fazer esse tipo de validação, devemos ver como a scanf() funciona.

A scanf() retorna a quantidade de variáveis que ela conseguiu ler.

Ex.:

int teste;
scanf("%d",&teste);
Se você digitar um número inteiro, ela retornará 1, caso contrário, a scanf retornará 0. Mas vale esclarecer o seguinte: A scanf() foi projetada para ler sequencialmente o que você digitar. Ex.:
int teste;
scanf("%d",&teste);
Se você digitar "123abc", ele irá guardar "123" na variável teste e irá descartar o "abc". Como a scanf() conseguiu atribuiu o número, ele retornará 1 dizendo que conseguiu ler a variável. Agora se você digitar "abc123", como a scanf() lê sequencialmene o que você digita, ele irá ver que o primiro dado se trata de uma string e não guardará nada na variável teste e retornará 0 dizendo que não conseguiu ler. Um outro caso especial: Se no exemplo acima você digitar 10.5, a scanf() vai ler o número inteiro antes do ponto, atrubuindo-o na variável teste e retornará 1. Então, a scanf() tem retorno do tipo int e retorna 1 (se ela estiver lendo apenas uma variável, ela pode ler mais) se ela conseguiu ler o dado digitado e 0 se não conseguiu ler (usuário digitou um dado inválido). Agora um exemplo de validação com a scanf():
int teste = -1;
int valido = 1;
do
{
    valido = scanf("%d",&teste);
    fflush(stdin); // Sempre limpe o buffer para realizar uma nova leitura.
    if(!valido)
        puts("Dado invalido!");
}while(!valido);

Caso o usuário digite um dado inválido (uma string por exemplo), ele irá invalidar!

Espero ter ajudado!

Vejam mais sobre a scanf() clicando aqui.

Edited by bruce845

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this