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 25
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 25
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 25
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
Rejoignez-nous