Les fichiers

infodaoudi
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012
- 22 sept. 2006 à 12:36
niketou
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010
- 23 sept. 2006 à 11:35
bonjour codeur
j'ai la fonction suivante
void Noeud::insererNF(char *fich,Noeud *ng)
{  
 
    ofstream A(fich,ios::out|ios::app|ios::binary);
    if (!A) cout << "Error opening output file" << endl;


    A.write((char*)(&(ng->nbEntree)),sizeof(int));   //=== 1
     A.write((char*)(&(ng->MBR)),sizeof(Rect));   //=== 2
 for(int i=0;i<ng->nbEntree;i++)
     PageRegion::insererPRF(fich,ng->fils[i],i); // === 3 probleeeeeeeeeeme


  A.close();
}
je veux inserer les instruction les une à la suite des autre pour le deux lignes (1&2) no probleme , or lorsque j'utilise la boucle for(3) l'insertion se fait au debut du fichier binaire sachant que l fonction est definie comme suit:
void PageRegion::insererPRF(char *fich,PageRegion *ng,int nb)
{
 ofstream A(fich,ios::in|ios::out|ios::ate);//    ici je crois le probleme   // 4
 if (!A) cout << "Error opening output file" << endl;
 
 A.write((char*)(&nb),sizeof(int));
 A.write((char*)(&(ng->MBR)),sizeof(Rect));
 A.write((char*)(&(ng->pp->nbredata)),sizeof(int));
 for(int j=0;j<ng->pp->nbredata;j++)
 {
  A.write((char*)(&(ng->pp->data[j])),sizeof(vecteur));


 }
    
 A.close();
}
comment alors modifier la ligne 4 por ne pas tomber dans ce problme
merci d'avance

9 réponses

niketou
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

22 sept. 2006 à 12:56
2 fois ofstream  A(fich,ios::out|ios::app|ios::binary); ??
0
infodaoudi
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

22 sept. 2006 à 13:16
j'ai pas compris la remarque ?
0
cs_laurent1024
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
26
22 sept. 2006 à 13:22
Ton fichier est ouvert 2 fois. Dans la premiere fonction et apres dans la fonction insererPRF il est reouvert.
++
0
infodaoudi
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

22 sept. 2006 à 13:25
ah, je vois, mais comment faire alors pour resoudre ce prbleme est ce qu'il ya un moyen pour ecrire a chaque fois à la suite du fichier binaire?
0

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

Posez votre question
cs_laurent1024
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
26
22 sept. 2006 à 13:44
solution 1 :
tu fermes ton fichier avant le for(3) et tu le reouvre avec le mode append dans la fonction insererPRF
solution 2 :
tu modifier inserrerRPF en passant en paramètre supplémentaire : une référence sur le flux de fichier
++
0
infodaoudi
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

22 sept. 2006 à 14:55
pour la premiere solution, j'ai ulitilser la declaration suivant pour la fonctoininserrerRPF
 static void insererNFRCacine(ofstream *A,Noeud *ng,int i);
mais il me sort l'erreur suivante: error C2061: syntax error : identifier 'ofstream'
je suis debuutante dans les fichier, comment je peux passer le flux du fichier en parametre?
merci
0
cs_laurent1024
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
26
22 sept. 2006 à 15:01
Vérifier dans ton fichier qu'il y est les directives #include<fstream.h> et using namespace std;
++
0
infodaoudi
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

22 sept. 2006 à 15:42
superbe, ca maaaaaaaaaaaaaaaaarche, merci bcp laurent1024 
0
niketou
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

23 sept. 2006 à 11:35
Et moi je pu lol.
N'oublis pas de cocher "reponce accepté" ;)
0