[C]
JC
-
loupius -
loupius -
Bonjour,
j'ai un petit soucis avec ce bout de code :
" printf("\nRajouter un article......................... 1");
printf("\nNe rien ajouter............................. 0");
fflush(stdin);
printf("\n\nReponse : ");
while((x=getchar()) != '\n' && x!=EOF);
scanf("\n%d", &rep);
printf("\n");
"
Comme vous pouvez le voir j'ai tout fait pour liberer de l'espace afin que lors de lexucution du programme il ne zappe pas le scanf .
or au bout de quelques executions de ce bout de code, il arrive malgrès tout à me zapper le scanf.
quelqu'un aurait une solution radicale??
merci d'avance!
jc
j'ai un petit soucis avec ce bout de code :
" printf("\nRajouter un article......................... 1");
printf("\nNe rien ajouter............................. 0");
fflush(stdin);
printf("\n\nReponse : ");
while((x=getchar()) != '\n' && x!=EOF);
scanf("\n%d", &rep);
printf("\n");
"
Comme vous pouvez le voir j'ai tout fait pour liberer de l'espace afin que lors de lexucution du programme il ne zappe pas le scanf .
or au bout de quelques executions de ce bout de code, il arrive malgrès tout à me zapper le scanf.
quelqu'un aurait une solution radicale??
merci d'avance!
jc
3 réponses
de la façon dont tu as tourné le message, j'aurais pensé que tu veuilles que je mette un '||' mais ça ne marche pas et c'est normal
sinon si quelqu'un pouvait me dire quelque chose sur ce bout de code :
printf("Entrez la quantité souhaitée..... : ");
fgets(buff, T, stdin);
conv = atoi(buff);
if (conv == 0)
{
q=1;
}
le but est d'entrée une quantité et si on ne rentre rien alors la quantité se met à 1 d'office
or même si je rentre 20, la quantité se met à 1.
con est toujours égal à 0?
sinon si quelqu'un pouvait me dire quelque chose sur ce bout de code :
printf("Entrez la quantité souhaitée..... : ");
fgets(buff, T, stdin);
conv = atoi(buff);
if (conv == 0)
{
q=1;
}
le but est d'entrée une quantité et si on ne rentre rien alors la quantité se met à 1 d'office
or même si je rentre 20, la quantité se met à 1.
con est toujours égal à 0?
Salut,
fflush(stdin) ne doit pas être utilisé. Son comportement est indéfini. Il faut utiliser à la place : while((c=getchar()) != '\n' && c!=EOF); comme tu as fait.
Evite les \n dans les scanf, un simple %d.
Voici une correction de ton programme :
Ca devrait mieux marcher.
Sinon pour répondre à ta question, le code que tu as donné fonctionne bien.
Il doit y avoir une erreur ailleurs. Par exemple, que vaut T ?
atoi permet de convertir en int le début de la chaîne entrée en arguments.
Cdlt
fflush(stdin) ne doit pas être utilisé. Son comportement est indéfini. Il faut utiliser à la place : while((c=getchar()) != '\n' && c!=EOF); comme tu as fait.
Evite les \n dans les scanf, un simple %d.
Voici une correction de ton programme :
char c; int rep; puts("Rajouter un article......................... 1"); puts("Ne rien ajouter............................. 0"); printf("\nReponse : "); scanf("%d", &rep); while((c=getchar()) != '\n' && c!=EOF); putchar('\n');
Ca devrait mieux marcher.
Sinon pour répondre à ta question, le code que tu as donné fonctionne bien.
Il doit y avoir une erreur ailleurs. Par exemple, que vaut T ?
atoi permet de convertir en int le début de la chaîne entrée en arguments.
Cdlt
Mais c'est une boucle dont on ne peut sortir !
Une boucle, disons-le gentiment, une boucle absurde (à moins de vouloir bloquer un programme).
Pardonne-moi.
Merci