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

thassa 19 Messages postés dimanche 3 avril 2005Date d'inscription 21 février 2008 Dernière intervention - 15 avril 2006 à 19:07 - Dernière réponse : thassa 19 Messages postés dimanche 3 avril 2005Date d'inscription 21 février 2008 Dernière intervention
- 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
platon179 237 Messages postés lundi 20 mai 2002Date d'inscription 22 juillet 2011 Dernière intervention - 15 avril 2006 à 19:20
3
Merci
Salut :)
Tu dois séparer les différents champs par des espaces ou des tabulations pour que ca fonctionne comme il faut.

Merci platon179 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

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

Merci platon179 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

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

___________________________________________
Les plus grands esprits trouvent toujours une solution
Commenter la réponse de SAKingdom
thassa 19 Messages postés dimanche 3 avril 2005Date d'inscription 21 février 2008 Dernière intervention - 15 avril 2006 à 21:48
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.