[C]

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
Configuration: Windows Vista
Safari 525.19

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Médite sur cette boucle:
    while ( (x != 1) && (x != 2));
    Qu'en penses-tu ?
    1. pas grand chose.. je vois pas à quoi tu veux en venir ?
    2. @JCPas 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).
    3. @JCOh m...., je me suis gourré dans mon raisonnement.
      Pardonne-moi.
      Merci
  2. 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?
    1. Contributeur
      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