[ C ] Probléme fgets

Fermé
lirycs78 Messages postés 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 - 20 mars 2009 à 19:58
 [c] - 10 juin 2010 à 00:01
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 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 1
20 mars 2009 à 20:32
help
0
sebshiva Messages postés 194 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
20 mars 2009 à 20:32
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 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 1
20 mars 2009 à 20:38
Sa change rien :/
0
sebshiva Messages postés 194 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
20 mars 2009 à 20:41
Bon, sinon, essaie
fgets(stdin);
avant le fgets en question...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
20 mars 2009 à 20:59
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
20 mars 2009 à 23:45
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
effectivement! while(getchar()!='\n'); résout ça.
0