Les fichiers

Signaler
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012
-
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010
-
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

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

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

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

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?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
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
++
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

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
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
Vérifier dans ton fichier qu'il y est les directives #include<fstream.h> et using namespace std;
++
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

superbe, ca maaaaaaaaaaaaaaaaarche, merci bcp laurent1024 
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

Et moi je pu lol.
N'oublis pas de cocher "reponce accepté" ;)