[C]

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

3 réponses

  1. loupius
     
    Médite sur cette boucle:
    while ( (x != 1) && (x != 2));
    Qu'en penses-tu ?
    0
    1. JC
       
      pas grand chose.. je vois pas à quoi tu veux en venir ?
      0
      1. loupius > JC
         
        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
      2. loupius > JC
         
        Oh m...., je me suis gourré dans mon raisonnement.
        Pardonne-moi.
        Merci
        0
  2. JC
     
    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
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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