Probleme avec gets()

Résolu
Bonjour,
quand je saisis un tableau d'enregistrement, arrivé à un point où je dois saisir une chaîne cette étape est sautée à l'exécution et le programme passe à la saisie suivante.
Merci de bien vouloir m'aider

2 réponses

  1. tu peux poster ton code ?
    1. C'est long mais je vais poster une partie:

      struct produits
      { int nump;
      float pu;
      char libp[50];
      }; struct produits p[nbp];

      void creer_prod(int *NBP)
      { char rep; *NBP=0;
      do
      { printf("\nNombre de produits saisis: %d",*NBP);
      printf("\nNum‚ro produit: ");
      scanf("%d",p[*NBP].nump);
      printf("\nPrix Unitaire: ");
      scanf("%f",p[*NBP].pu);
      printf("\nLibell‚: ");
      gets(p[*NBP].libp);
      *NBP++;
      printf("\nAjouter? (Oui:O/Non:N): ");
      gets(&rep);
      }while(rep!='N' && rep!='n' && rep=='O' || rep=='o');
      }
    2. @diocoolBonsoir.
      Aidez moi svp.
      Je ne comprends pas pourquoi à la saisie, la saisie du libellé est sautée pendant l'exécution.

      struct produits
      { int nump;
      int pu;
      char libp[50];
      }; struct produits p[5];

      main()
      { int i;
      clrscr();
      for(i=0;i<5;i++)
      { printf("\nNuméro produit: ");
      scanf("%d",p[i].nump);
      printf("\nPrix Unitaire: ");
      scanf("%d",p[i].pu);
      printf("\nLibellé: ");
      gets(p[i].libp);
      }
      getch();
      }
  2. Contributeur
    Salut,
    scanf("%d",&p[i].nump); Tu dois passer l'adresse dans le scanf.
    Même remarque pour p[i].pu.
    Ensuite, pour libp, cela saute à cause du \n stocké dans le buffer.
    Pour cela place avant ton gets, place l'instruction :
    while(getchar()!='\n');

    Et enfin, il ne faut jamais utiliser gets. A la place, tu peux utiliser :
    fgets(p[i].libp,50,stdin);

    Cdlt
    1. MERCI BEAUCOUP DE TON AIDE RAPIDE ET PRÉCIEUSE. Ça fait longtemps que j'ai eu ce problème.
      Encore une fois merci.