Rodrigo_D Posted May 24, 2020 at 12:17 PM Report Share #618201 Posted May 24, 2020 at 12:17 PM 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 comment Share on other sites More sharing options...
Tim§id€ Posted May 25, 2020 at 09:18 AM Report Share #618203 Posted May 25, 2020 at 09:18 AM Boas, é normal tu no while estas a validar inteiros e não chars. etc. Pesquisa isDigit() em C ...º(>_<)º... Link to comment Share on other sites More sharing options...
Rui Carlos Posted May 25, 2020 at 06:16 PM Report Share #618205 Posted May 25, 2020 at 06:16 PM 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 comment Share on other sites More sharing options...
Rodrigo_D Posted May 27, 2020 at 09:31 AM Author Report Share #618227 Posted May 27, 2020 at 09:31 AM Obrigado a todos mas entretando p rpoblema está resolvido! Link to comment Share on other sites More sharing options...
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