Problème avec la fonction gets

Signaler
Messages postés
1
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2012
-
katsankat
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
-
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

Messages postés
3804
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
30 janvier 2020
96
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
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
Correct. Il faudrait voir la déclaration de la variable ETUD, et son initialisation probablement fondée sur calloc(). Regarder éventuellement realloc(). Et malloc().