ZI-Power Posted November 22, 2015 at 06:38 PM Report Share #589979 Posted November 22, 2015 at 06:38 PM (edited) Boas pessoal! Eis a minha questão, gostava de saber como faço para que a minha condição do - while pare enquanto for inteiro e continue enquanto for diferente de inteiro! do { printf("Insira um numero: "); scanf("%d", &num); } while (num != (int)); Edited November 22, 2015 at 07:42 PM by pwseo syntax highlight. Link to comment Share on other sites More sharing options...
pwseo Posted November 22, 2015 at 07:42 PM Report Share #589981 Posted November 22, 2015 at 07:42 PM Tens que utilizar o valor que te é devolvido pela função scanf para determinar se leste ou não o número que querias. Link to comment Share on other sites More sharing options...
ZI-Power Posted November 22, 2015 at 08:17 PM Author Report Share #589985 Posted November 22, 2015 at 08:17 PM Nâo percebi muito bem, por exemplo, no meu código, se meter uma letra o programa vai abaixo, crasha basicamente! Eu queria arranjar forma de me pedir sempre para introduzir um numero ate esse ser um inteiro! Link to comment Share on other sites More sharing options...
pwseo Posted November 22, 2015 at 09:14 PM Report Share #589986 Posted November 22, 2015 at 09:14 PM Se fores à documentação relevante (na secção «Return value»), encontras o seguinte: These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure. Isto significa que a função deverá devolver o número 1 no teu caso (e zero caso o utilizador não introduza o que é pedido). Tens apenas que incluir essa verificação no teu ciclo. Repara neste exemplo: ~ $ ./exemplo Introduza um número: a Isso não era um número. ~ $ ./exemplo Introduza um número: 42 Boa!, introduziste o número 42 ~ $ E aqui fica o código do exemplo: #include <stdio.h> int main(void) { int n = 0, ret; printf("Introduza um número: "); ret = scanf("%d", &n); if (ret == 1) printf("Boa!, introduziste o número %d\n", n); else printf("Isso não era um número.\n"); return 0; } 1 Report Link to comment Share on other sites More sharing options...
ZI-Power Posted November 23, 2015 at 04:02 PM Author Report Share #590009 Posted November 23, 2015 at 04:02 PM (edited) do { printf("\nInsira um num: "); ret = scanf("%d", &num); } while (ret != 1); se eu meter um char, isto faz-me um loop infinito! Eu queria evitar que fizesse o Loop! Edited November 23, 2015 at 04:48 PM by ZI-Power Link to comment Share on other sites More sharing options...
ZI-Power Posted November 23, 2015 at 04:48 PM Author Report Share #590016 Posted November 23, 2015 at 04:48 PM Esquece amigo! Já resolvi! Problema de buffer! Obrigado! 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