Ir ao conteúdo

Posts recomendados

Postado

Queria blindar para que, caso o usuário coloque uma letra ao invés de um numero inteiro, a aplicação informasse que o numero não é valido e lesse novamente:

printf("Idade:");scanf("%d", &idade[l]);
Postado

A função scanf() retorna o número de elementos que foram lidos, ou zero em caso de erro.

Então, se você tiver:

y = scanf("%d", &x);

Considerando que 'x' é do tipo INT, então 'y' vai ser igual a 1 se você digitar qualquer número inteiro, e vai ser igual a 0 se você digitar uma letra ou nome.

Basta então testar o valor de y e repetir o scanf.

 

#include <stdio.h>int main(){    int x, y;    do {        y = scanf("%d", &x);        while (getchar() != '\n'); // limpando o stdin    } while (!y);    return 0;}
  • Curtir 1
  • Membro VIP
Postado
Opa, tudo em paz?

 

Dá uma olhada no manual da função scanf. Lá fala sobre o retorno dela:



Return Value

These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure.



 

Ou seja, ela retorna no número de entradas que casaram com sucesso com o formato. No seu caso você só pediu uma entrada (%d), então ela tem que retornar 1. Se o retorno for diferente disso, falhou. ;)

 

Abraços.

  • Curtir 1
Postado


int numero;

while( scanf( "%d", &numero ) != 1 ){

       printf( "Digite um numero valido como por exemplo:\n" );

       printf( "3, 56.2; Tente novamente $numero> " );

fflush( stdin );

}

Visitante
Este tópico está impedido de receber 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!