Fprintf, fscanf ne marchent pas!!!! [Résolu]

Messages postés
19
Date d'inscription
dimanche 3 avril 2005
Dernière intervention
21 février 2008
- - Dernière réponse : thassa
Messages postés
19
Date d'inscription
dimanche 3 avril 2005
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)
}
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
237
Date d'inscription
lundi 20 mai 2002
Dernière intervention
22 juillet 2011
3
Merci
Salut :)
Tu dois séparer les différents champs par des espaces ou des tabulations pour que ca fonctionne comme il faut.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de platon179
Messages postés
237
Date d'inscription
lundi 20 mai 2002
Dernière intervention
22 juillet 2011
3
Merci
Et j'oubliais, il faut passer des adresses a fscanf sinon ca ne marchera jamais...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de platon179
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
0
Merci
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
Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
0
Merci
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
Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
0
Merci
Oups désolé. Double post.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Commenter la réponse de SAKingdom
Messages postés
19
Date d'inscription
dimanche 3 avril 2005
Dernière intervention
21 février 2008
0
Merci
IT'S OK!!!
ça marche très bien
merci++ pour vous deux!
Commenter la réponse de thassa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.