Probleme avec fscanf en C

Résolu/Fermé
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 21 sept. 2008 à 11:26
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 21 sept. 2008 à 16:22
Bonjour,

J'ai un problème avec la fonction fscanf (langage C).

J'ai une ligne stckée dans un fichier texte.

Voici le contenu de la ligne : nom prenom sexe date_ de_naissance

nom et prenom sont des chianes de caracteres, sexe est un seul caractere ('H' pour Homme ou 'F' pour Femme) et date_de_naissance est aussi une chaine de caracteres sous forme de MM/DD/YY.

Dans mon programme, je veux recuperer le contenu de cette ligne et le stocker dans des variables prédéfinis.

voici le programme :

int main(void)
{
...
/*declaration des variables pour stocker les données*/
char nom[20], prenom[20], datenaissance[10];
char sexe;

/*apres avoir ouvert convenablement le fichier correspondant, voici fscanf*/
fscanf(le_fichier_ouvert, "%s %s %c %s", nom, prenom, &sexe, datenaissance);

/*jusque là tout va bien mais quand j'affiche avec printf, le contenu de la date de naissance ne s'affiche pas !!!*/
printf("\n NOM = %s \n PRENOM = %s \n SEXE = %c \n DATE DE NAISSANCE = %s \n", nom, prenom, sexe, datenaissance);

...
}

Par exemple si le contenu de la ligne était la suivante : Dubois René H 12/10/59, après execution du programme, il m'affiche :

NOM = Dubois
PRENOM = René
SEXE = H
DATE DE NAISSANCE = (ici ça reste blanc)

Quelqu'un peut m'expliquer SVP ?

2 réponses

Bonjour,

Pour le format

printf("\n NOM = %s \n PRENOM = %s \n SEXE = %c \n DATE DE NAISSANCE = %s \n"

Vous n'auriez pas dû mettre dans votre fichier

Dubois René H 12/10/59

mais

Dubois René H
12/10/59


Manu
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
21 sept. 2008 à 15:52
j'ai pas bien compris.
en fait ce n'est que la premiere ligne du fichier.
parce que le fichier est du style :

Dubois René H 12/10/59 /*1ère ligne*/
Chateau Vilma F 10/11/60 /*deuxieme ligne*/
Bush Georges H 11/02/58 /*troisième ligne*/
etc .....

Je suis obligé de mettre ces donnée en linéaires car je dois récupéré chaque ligne et les mettre dans des champs d'une liste chainée.

pour se faire, je lis une ligne, je récupère les données et je les stocke dans une structure définie par typedef struct{
char * nom;
char * prenom;
char sexe;
char * datenaissance;
} Personne;

Bref, à chaque ligne correspond une personne

En fait ma question était : pourquoi dans mon programme précédent je n'arrive pas à récupérer la variable datenaissance ?
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
21 sept. 2008 à 16:02
hello
et en plaçant un espace à la fin de la ligne
Dubois René H 12/10/59<espace>
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
21 sept. 2008 à 16:22
Merci à tous, je ne sais pas exactement ce qui s'est passé, à mon avis je me suis trompé de fichier car j'en ouvre plusieurs, je n'ai rien changé et maintenat ça fonctionne
0

Discussions similaires