Ir para o conteúdo
Ramalhosa

Erro na Leitura no Scanf

Mensagens Recomendadas

Ramalhosa    0
Ramalhosa

Boas,fiz este menu,mas queria que ele só recebesse mesmo 1,2,3,4..

Caso uma pessoa insira 1a..ou 1 <enter> a..ele dê erro.

O problema do 1a,já consegui resolver,mas ele aceita caso faça

1 <enter>

a

e ele entra na ajuda!

Tentei fazer a leitura unicamente de um '\n' para evitar que fosse colocado outro caracter a seguir à opção certa escolhida mas não estou a conseguir faze-lo.

Alguem sabe cm resolver o problema?

Aqui vai o código.

void menuutilizador(void){
int opcao,aux;
char barra;
   
printf("Benvindo ao sistema de informação sobre cursos universitários:\n Opções disponíveis\n");

do{
printf("1 - AJUDA\n");
printf("2 - CURSO FREQUENTADO\n");
printf("3 - CURSO DESEJADO\n");
printf("4 - SAIR\n");

printf("Introduza a Opção desejada\n");
aux = scanf("%d%c",&opcao,&barra);
getchar();
if(aux != 2 || opcao < 1 || opcao > 4 || barra != '\n')
printf("\n\nErro na introdução da opção\n\nOpções Disponíveis\n\n");
}while(aux != 2 || opcao < 1 || opcao > 4 || barra != '\n');

switch(opcao)
{
case 1: printf("\n\nAjuda\n\n");
break;
case 2: printf("\n\nCurso Frequentado\n\n");
break;
case 3: printf("\n\nCurso Desejado\n\n");
break;
case 4: printf("\n\nObrigado por ter utilizado o programa\n\n");
break;
}
}

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

se calhar o melhor é leres o input para uma string e depois verificar se é um valor válido (só há 4, por isso não é complicado).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ramalhosa    0
Ramalhosa

Eu queria fazer de maneira a ler o primeiro caracter,caso fosse um digito entre 1 e 4 e caso o caracter a seguir for um '\n'...tudo bem..caso fosse outra coisa qualquer dá erro..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ramalhosa    0
Ramalhosa

Para dps ler o primeiro caraceter que supostamente será um digito..

Vou ter de converter o caraceter para digito para dps enviar para o scanf certo?

Cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Eu queria fazer de maneira a ler o primeiro caracter,caso fosse um digito entre 1 e 4 e caso o caracter a seguir for um '\n'...tudo bem..caso fosse outra coisa qualquer dá erro..

int num=0;

scanf("%d", &num);

if((num<1) || (num>4)){
    printf("ERRO, numero menor que 1 ou maior que 4!");
}
else{
    printf("numero dentro dos limites");
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade