Rodrigo_D 0 Posted May 24, 2020 Report Share Posted May 24, 2020 Boa tarde, sou um pouco novo na programação, pelo menos em C. Estou a tentar criar um programa, em que no inicio mostra um menu ao utilizador, que consiste num do...while, que le um inteiro, e um switch lá dentro. Funciona perfeitamente para ler e verificar o inteiro, o problema é quando se escreve alguma letra ou outro caracter para alem de um numero, que fica preso num ciclo infinito mostrando a mensagem default do ciclo switch. O código é o seguinte: int op; printf("Escolha uma das seguintes opcoes:\n 1. opcao 1\n 2. opcao 2\n 3. opcao 3\n"); do{ scanf("%d", &op); switch(op){ case 1: (instrução); break; case 2: (instrução); break; case 3: (instrução); break; default: printf("\nPor favor introduza um valor valido\n"); } }while(op<1 || op>3); Se alguem me poder esclarecer o erro agredicia imenso. Rodrigo Duarte Link to post Share on other sites
Tim§id€ 5 Posted May 25, 2020 Report Share Posted May 25, 2020 Boas, é normal tu no while estas a validar inteiros e não chars. etc. Pesquisa isDigit() em C ...º(>_<)º... Link to post Share on other sites
Rui Carlos 359 Posted May 25, 2020 Report Share Posted May 25, 2020 Eu apontava para problemas ao ler o inteiro com o scanf. Experimenta substituir "%d" por " %d". Devias também validar o valor devolvido pelo scanf. Rui Carlos Gonçalves Link to post Share on other sites
Rodrigo_D 0 Posted May 27, 2020 Author Report Share Posted May 27, 2020 Obrigado a todos mas entretando p rpoblema está resolvido! Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now