[ C ] Probléme fgets

lirycs78 Messages postés 101 Date d'inscription   Statut Membre -  
 [c] -
Bonjour,

J'ai un soucis avec fgets que j'ai mis dans mon code, le probléme c'est que quand je lance mon prog, le fgets n'est pas pris en compte, il ne me propose pas d'entrez du texte et le programme s'arréte. merci de m'aider.

Voici le code : http://rafb.net/p/zFpwtc22.html
Configuration: Windows XP
Firefox 3.0.7

6 réponses

  1. lirycs78 Messages postés 101 Date d'inscription   Statut Membre 1
     
    help
    0
  2. sebshiva Messages postés 198 Statut Membre 10
     
    Salut,

    ça remonte à loin pour moi le C...
    Mais je te donne une idée qui vaut ce qu'elle vaut...
    essaie de remplacer
    fgets(buffer,sizeof(buffer),stdin);
    par
    fgets(buffer,sizeof buffer,stdin);
    ...
    Les parenthèses...
    Tiens moi au jus, ça attise ma curiosité...
    Faut que je m'y remette au C... des que j'aurais le temps...
    0
  3. lirycs78 Messages postés 101 Date d'inscription   Statut Membre 1
     
    Sa change rien :/
    0
    1. sebshiva Messages postés 198 Statut Membre 10
       
      Bon, sinon, essaie
      fgets(stdin);
      avant le fgets en question...
      0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Essaie
    #include <stdio.h>
    #include <stdlib.h>
    
    int menu ();
    
    int main()
    {
        char buffer[200];
        int choix;
    
        puts("System T00l");
        puts("Version 1.0 Code by Hel0ck");
        while((choix=menu())){
            switch(choix){
              case 1:
                printf("Lister Repertoire\n");
                fgets(buffer,sizeof(buffer),stdin);
                printf("buffer : %s\n",buffer);
                //system(buffer);
                break;
              case 2:
                puts("Creer Repertoire");
                break;
              case 3:
                puts("Supprimer fichier");
                break;
              case 4:
                puts("Changer de repertoire");
                break;
              case 5:
                exit(0);
              default:
                return -1;
            }
        }
        return 0;
    }
    
    int menu (){
            int choix;
            puts("[1] Lister repertoire");
            puts("[2] Creer repertoire");
            puts("[3] Supprimer fichier");
            puts("[4] Changer de repertoire");
            puts("[5] Quitter");
    
            printf("Choix? ");
            scanf("%d",&choix);
            getchar();
            return choix;
    }
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Normal, lors de ton scanf("%d") dans ta fonction menu(), il y a un '\n' qui va se loger dans le buffer. C'est à cause de ça, que tu as l'impression que ton fgets() ne fait rien. Il faut donc vider le buffer clavier après ton scanf("%d",...) par :
    while(getchar()!='\n');

    Ou tout simplement getchar() comme te l'a suggéré lami20j si l'utilisateur n'est pas un farceur ^^.
    0
  7. [c]
     
    effectivement! while(getchar()!='\n'); résout ça.
    0