Problème avec la fonction gets

hamza506 Messages postés 1 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 18 mai 2012 - 18 mai 2012 à 22:52
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 22 mai 2012 à 02:33
Bonjour
Je travail sur un mini projet
Sur mon programme j'essayer de lire un nombre des noms des étudiants et les stocker sur un tableau
J’ai posé cette solution
printf("combien d'étudiant voulez vous entrer : ");
                    scanf("%d",&OPE);
                    for(IE=0;IE<OPE;IE++)
                    {
                    printf("entrer le nom complet de l'étudiant %d : ",E+1);
                    gets(ETUD[E]);
                    E++;
                    }

j ai trouvé un problème avec gets() a l'exécution , quand je demande le stockage de 4 étudiants par exemple , le programme saut le 1er étudiant et demande directement la saisie du 2eme étudiant
combien d'étudiant voulez vous entrer : 4
Entrer le nom complet de l'étudiant 1 : entrer le nom complet de l'étudiant 2 :


j'ai besoin de l’aide, ou une autre façon efficace et facile de lire une chaîne de caractère s'il est possible, par ce que j'ai un grand problème avec ce type des fonctions, gets , getch ....etc

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
20 mai 2012 à 08:57
Bonjour.

Utilise scanf tout simplement comme tu l'as fait au début.

int i = 0;
int nb = 0;
char nom[256];
printf("Combien d'étudiant voulez vous entrer: ");
scanf("%d", &nb);
for(i = 0; i < nb; ++i)
{
  printf("Entrez le nom complet de l'étudiant %d: ", i + 1);
  scanf("%s", nom);
  printf("Nom est: %s\n", nom);
}


Pour mettre plusieurs noms dans un tableau dont la taille n'est pas connue, il te faut allouer avec malloc un tableau de chaînes de caractères. Je te laisse le soin de te documenter sur cette partie.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
22 mai 2012 à 02:33
Correct. Il faudrait voir la déclaration de la variable ETUD, et son initialisation probablement fondée sur calloc(). Regarder éventuellement realloc(). Et malloc().
0
Rejoignez-nous