Ir ao conteúdo
  • Cadastre-se

Como blindar inteiro?


diego5672

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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
Link para o comentário
Compartilhar em outros sites

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!