Saisie chaines caractère en boucle en C

oim09 Messages postés 4 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 3 août 2006 - 13 janv. 2005 à 12:21
oim09 Messages postés 4 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 3 août 2006 - 14 janv. 2005 à 09:09
Voila alors j'ai rencontré un problème que je n'avai jamais rencontrer.
Je veu faire une fonction qui rempli un tablaeu avec des chaines de
caractères saisie au clavier sur l'entree standard donc, une fonction
très simple en l'occurence, mais mon problème est le suivant : une
boucle sur deux passe sans que l'on me propose d'entrer une chaine.
Voici ma fonction :



void rempli_tableau(int longueur,char **tableau)

{

int i;

char *s = (char *)malloc(30 * sizeof(int));

for(i=0;i<longueur;i++)

{

fgets(s,30,stdin);

tableau[i] = (char *)malloc((strlen(s)+1)*sizeof(int));

strcpy(tableau[i],s);

}

}



Voila si quelqu'un sais comment résoudre ce problème...

PS : j'ai déja essayer de remplacer le fgets par un scanf mais cela ne change rien.

3 réponses

theneoiceman Messages postés 78 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 avril 2010
13 janv. 2005 à 12:47
Essaye de rajouter un fflush(stdin) juste apres le strcpy avant la fin de ta boucle. Ca devrait pouvoir regler ton probleme...

Voila


Mess with the best, die like the rest
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
13 janv. 2005 à 18:10
Autre solution : printf("")

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
0
oim09 Messages postés 4 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 3 août 2006
14 janv. 2005 à 09:09
OK Je vous remercie la solution du fflush(stdin) résoud le problème
pour toutes les boucles sauf la premiere ce qui n'est plus trop un
problème, je la fait boucler dans le 'vide'. Merci a vous
0
Rejoignez-nous