[C]

Fermé
JC - 12 janv. 2009 à 22:36
 loupius - 13 janv. 2009 à 00:31
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

3 réponses

Médite sur cette boucle:
while ( (x != 1) && (x != 2));
Qu'en penses-tu ?
0
pas grand chose.. je vois pas à quoi tu veux en venir ?
0
loupius > JC
12 janv. 2009 à 23:41
Pas grand chose !!
Mais c'est une boucle dont on ne peut sortir !
Une boucle, disons-le gentiment, une boucle absurde (à moins de vouloir bloquer un programme).
0
loupius > JC
13 janv. 2009 à 00:31
Oh m...., je me suis gourré dans mon raisonnement.
Pardonne-moi.
Merci
0
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?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
13 janv. 2009 à 00:19
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 :
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
0