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

como impedir que o usuario digite letras ou caracteres especiais em um vetor tipo int


Bruno Henrique Peron

Pergunta

Ola pessol,  tenho uma duvida. Como faço para impedir que o usuario digite letras em um vetor tipo float. No meu caso eu preciso fazer um codigo em que leia 5 notas de tipo float depois fazer a media dela, e imprimir as 5 notas e a media dela  . Então o usuario deve digitar 5 notas , e depois sera dado a media, porem se o usuario digitar alguma letra ou algum caracter especial da um bug no algoritmo.

então tem alguma funcao que eu possa usar que faça essa comparacao ou coisa do tipo ?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Usando o valor de retorno da função scanf.
 


/*
3 A função scanf retorna o valor da macro EOF se ocorrer um falho de entrada antes que a primeira
conversão(se houver) seja concluída. Caso contrário, a função scanf retorna o número de itens de entrada
atribuído, que pode ser menor do que o previsto, ou mesmo nula, em caso de uma falha de correspondência de início.

*/


/*
A função scanf devolve o número de dados de entrada designado, que podem ser inferiores a oferecida, mesmo nulo, no caso de um erro de alocação. Se ocorre um erro de entrada antes de qualquer conversão, a função scanf retorna o valor do EOF macro.
*/
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    
    int res = scanf ( "%d", &n );
    
    if ( res == 0 )
        printf ( "Encontrado falho\n" );
        
    if ( ferror ( stdin ) )
        perror ( "error" );
        
    if ( feof ( stdin ) )
        printf ( "end-of-file encontrado.\n" ); // Ctrl+Z en Windows
        
    printf ( "\n%d", n );
    
    return 0;
}

se hipoteticamente falando, scanf precisar tomar 3 dados( scanf("%d%d%d", &a, &b, &c) ), scanf deveria retornar um 3(int), mas se tipo ler 2 variáveis e falhar na 3º(&c), scanf retornaria um 2, com isso você sabe que 2 leituras foram corretas, mas a terceira não.
Caso falhem todas retorna 0.
Caso tente entrar com um char onde seria um int, em um scanf que faria a leitura de uma única variável, cairia na mensagem, como no exemplo anterior. Porem essas condições podem ser alteradas para servir a outros propósitos.

Procure se documentar sobre o valor de retorno do scanf

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...