Ir ao conteúdo
  • Cadastre-se
Delemar Neto

Tratativa de erros C

Recommended Posts

Boa tarde!!

 

Existe alguma forma do programa não dar erro ao digitar um CHAR num campo INT?

 

Alguma condição que faça com que esse erro seja tratado?

 

Por exemplo, no código abaixo:

 

Quero uma condição, ou algo que faça com que, se valor for diferente de número, o programa deve solicitar q seja digitado um numero, não dar erro como está fazendo...

int main(){    int valor;    puts("informe o valor:");    scanf("%d",&valor);    printf("%d",valor);}

Código é apenas ilustrativo.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em C, nativamente, não é possível armazenar um CHAR em INT, devido ao tamanho de memória ocupado para cada um deles.

O tipo CHAR, comumente, ocupa 1 Byte (8 Bits), enquanto o INT ocupa 4 Bytes (32 Bits). Esse tipo de informação é detectada pelo programa no momento da execução.

É até possível fazer o que você quer, mas não de maneira trivial.

 

A ideia mais comum, para esse tipo de situação, é fazer a leitura em CHAR e, se for número, converter o CHAR em INT e armazená-lo em uma variável INT.

 

Um exemplo bem simples e com pouco tratamento, apenas obter uma noção:

    char leitura[100];    int valor = -1;     printf("informe o valor: ");    scanf(" %s", leitura);     if ( leitura[0] >= '0' && leitura[0] <= '9' ) // Considerando que o vetor inteiro seja numerico caso a primeira posicao seja verdadeira        valor = atoi(leitura);     printf("Conteudo lido: %s\n", leitura);     if ( valor < 0 )        printf("Sem valor numerico\n");    else        printf("Numero: %d\n", valor);

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!

Se eu entendi bem o erro:

Segue uma das possíveis soluções praticas:

Se não valeu!

#include <stdio.h>int main(){    int nt_idade = 0;    char chr_vrsOK = 0;    gt_TenteNovamente:    puts("Quantos anos voce tem:");    chr_vrsOK = scanf(" %d", &nt_idade); fflush(stdin);    if(!chr_vrsOK)    {        puts("Digite sua Idade com Numeros. Por favor!");        goto gt_TenteNovamente;    }    if( nt_idade > 59)        puts("Seja bem vindo a melhor idade!"); else        puts("Voce e Jovem ainda!");    printf("Com %d anos.", nt_idade);return(0);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×