[ C ] Probléme fgets

lirycs78 Messages postés 106 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

6 réponses

lirycs78 Messages postés 106 Statut Membre 1
 
help
0
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
lirycs78 Messages postés 106 Statut Membre 1
 
Sa change rien :/
0
sebshiva Messages postés 198 Statut Membre 10
 
Bon, sinon, essaie
fgets(stdin);
avant le fgets en question...
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 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
[c]
 
effectivement! while(getchar()!='\n'); résout ça.
0