Fgets??? en langage C

Résolu
Bonjour,
j'ai un code ou je veux écrire des phrases et les afficher.
Ce code fonctionne très bien sans un switch mais avec celui-ci, ça boucle
et il ne m'inscris rien????????
Merci d'avance pour votre aide et je met mon code ci-après....

J'ai utilisé fgets pour écrire ma phrase, est-ce la mon erreur?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


int main(int argc, char *argv[])
{
int choix;  
char l[100], c[100]={0}; 
while(choix!=0)
{
printf("\n-1- affiche la question 1");
printf("\n-2- affiche la question 2");
printf("\n-2- affiche la question 3");
printf("\n votre choix=============>");
scanf("%d", &choix);

switch(choix)
{
case 1:

printf("salut,encode ta phrase : ");
fgets(l,100,stdin);

break;


case 2 :

printf("Ha ta phrase est %s", l);
break;

case 3 :

printf("je copie ta reponse dans une autre variable");
strcpy(c,l);
printf("%s", c);
break;
}

}
  getch();
  return 0;
}


Configuration: Windows XP
Firefox 2.0.0.12

6 réponses

  1. Contributeur
    Salut,
    N'oublie pas d'initialiser choix à -1 par exemple. Tu effectues une comparaison sans l'initialiser.
    Sinon, toujours le même problème, lorsque tu utilises scanf("%d",...), tu as le '\n' stocké dans le buffer clavier.
    Donc tu peux faire un fgetc(stdin); par exemple juste avant l'utilisation du fgets;

    Cordialement
    1. salut mype et fiddy,
      par vos réflexions, j'ai trouvé mon erreur, enfin je pense,
      j'ai oublié de mettre la getchar(), c'est ça non?
      1. oui c'est ça ou fgetc(stdin) comme te la dit fiddy
    2. Contributeur
      Oui, mais je t'avais dit tout ceci dans mon post n°1 !
      1. ah limbergh toujours le meme probleme ;)
        c'est le '\n' qui pose probleme
        1. Contributeur
          Lol mype, avec le temps, ça viendra ;)
      2. ok,
        merci pour vos réponses!!!! et votre patience (lol)
        1. Contributeur
          À tes ordres, et à la prochaine fois pour un '\n' ;)