Fprintf, fscanf ne marchent pas!!!!

Résolu
thassa Messages postés 19 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 21 février 2008 - 15 avril 2006 à 19:07
thassa Messages postés 19 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 21 février 2008 - 15 avril 2006 à 21:48
salut,
je veux écrire les données d'un objet personne dans un fichier
et puis de relire un objet personne à partir de ce fichier.et tout ceci en utilisant les opérateurs >> et << mais fscanf ne marche pas!

voici le code:

class personne
{
int cin, j_naiss, m_naiss, a_naiss;
char nom[max], prenom[max], etat_civil[max];

friend void operator<<(personne&, char*);
friend void operator>>(personne&, char*);
......
};

//********* ecrit personne sur une ligne ds fichier***

void operator<<(personne& p,char* name_file)
{
FILE* fp;

fp=fopen(name_file,"a")

fprintf(fp,"%d%s%s%d%d%d%s\n",
p.cin,p.nom,p.prenom,p.j_naiss,p.m_naiss,p.a_naiss,p.etat_civil);

fclose(fp);
}

//*******lire personne depuis fichier

void operator>>( personne& p,char* name_file)
{
FILE *fp;

fp=fopen(name_file,"r")
fscanf(fp,"%d%s%s%d%d%d%s\n",
p.cin,p.nom,p.prenom,p.j_naiss,p.m_naiss,p.a_naiss,p.etat_civil);

fclose(fp)
}

6 réponses

platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
15 avril 2006 à 19:20
Salut :)
Tu dois séparer les différents champs par des espaces ou des tabulations pour que ca fonctionne comme il faut.
3
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
15 avril 2006 à 19:22
Et j'oubliais, il faut passer des adresses a fscanf sinon ca ne marchera jamais...
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
15 avril 2006 à 20:49
Exact car voie tu, si tu fait fprintf(file, "%d%d", 10, 12);
ça va écrire 1012 dans ton fichier mais quand tu fera
fscanf(file, "%d%d", Value1, Value2);
Value1 va être egal a 1012 mais Value2 n'aura rien du tout ou aura la valeur suivant qui n'est pas bonne ou n'est pas une valeur int.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
15 avril 2006 à 20:50
Exact car voie tu, si tu fait fprintf(file, "%d%d", 10, 12);
ça va écrire 1012 dans ton fichier mais quand tu fera
fscanf(file, "%d%d", Value1, Value2);
Value1 va être egal a 1012 mais Value2 n'aura rien du tout ou aura la valeur suivant qui n'est pas bonne ou n'est pas une valeur int.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
15 avril 2006 à 20:53
Oups désolé. Double post.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
thassa Messages postés 19 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 21 février 2008
15 avril 2006 à 21:48
IT'S OK!!!
ça marche très bien
merci++ pour vous deux!
0
Rejoignez-nous