Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
643 connectés 

  FORUM HardWare.fr
  Programmation

  c++ : bizarre bizarre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

c++ : bizarre bizarre

n°36834
Profil sup​primé
Posté le 04-06-2001 à 14:34:10  answer
 

//si le fichier data n'existe pas,  
 //on le cree, on le preformate et on l'ouvre en mode mise a jour
 data.open (ficdata.c_str (),ios :: binary | ios :: in);
 if (! data.is_open ())
 {
  fp.open (ficdata.c_str (),ios :: binary | ios :: out);
  fp.write ((char*) format,sizeof (SI_Enreg) * NB_ENREG);
  fp.close ();
 }
 fp.open (ficdata.c_str (),ios :: binary | ios :: in | ios :: out);
 
 
si j'ecrit ce code, ca marche.  
mais si j'ecrit
 
 
 //si le fichier data n'existe pas,  
 //on le cree, on le preformate et on l'ouvre en mode mise a jour
 data.open (ficdata.c_str (),ios :: binary | ios :: in);
 if (! data.is_open ())
 {
  data.open (ficdata.c_str (),ios :: binary | ios :: out);
  data.write ((char*) format,sizeof (SI_Enreg) * NB_ENREG);
  data.close ();
 }
 fp.open (ficdata.c_str (),ios :: binary | ios :: in | ios :: out);
 
 
sachent que data et fp sont toutes les deux des fstream, et format est un tableau de NB_ENREG elements de type SI_Enreg.
 
Pourquoi la première version formate le fichier alors que la deuxième le laisse vide ??? pourtant j'ai vérifié et la condition du if est bien verifiée.
j'utilise visual studio 6.

mood
Publicité
Posté le 04-06-2001 à 14:34:10  profilanswer
 

n°36914
janoscoder
Posté le 05-06-2001 à 00:29:39  profilanswer
 

est-ce que fp et data sont des streams sur le même fichier?
as-tu essayé d'écrire un truc du genre
data<<'a';
pour voir si le problème vient du write ou du reste?
en fait, je pense que le code est bon et le bug ailleurs, mais bon...

n°36938
minusplus
Posté le 05-06-2001 à 10:00:16  profilanswer
 

j'ai rien compris... t'ouvres deux fois le même fichier ??

n°37015
Profil sup​primé
Posté le 05-06-2001 à 13:55:17  answer
 

fp et data sont deux fstream, fermées avant le code posté ci dessus.
je sais pas si le pb vient du write, la seule chose qui change c'est le fstream utilisé, mais pourtant il ouvre le même fichier dans la même mode.

n°37020
tgrx
My heart is pumping for love
Posté le 05-06-2001 à 14:02:27  profilanswer
 

Dans ton deuxieme cas, verifie que ton fichier est ouvert.
data.open (ficdata.c_str (),ios :: binary | ios :: in);  
if (! data.is_open ())  
{  
  data.close() ; // Par mesure de precaution
  data.open (ficdata.c_str (),ios :: binary | ios :: out);  
  if (data == NULL)
    cout << "Ah l'autre eh" << endl;
  data.write ((char*) format,sizeof (SI_Enreg) * NB_ENREG);  
  data.close ();  
}  
fp.open (ficdata.c_str (),ios :: binary | ios :: in | ios :: out);  
 
Personnellement j'utilise l'operateur == pour savoir si un fichier est ouvert correctement.
If (data == NULL) plutot que (data.is_open()). Ca doit etre exactement la meme chose mais on ne sait jamais...

n°37092
Profil sup​primé
Posté le 05-06-2001 à 16:49:53  answer
 

j'ai vérifié et dans les deux cas il rentre dans le if (j'ai mis un printf pour voir).
=> pas de problème de condition

n°37253
tgrx
My heart is pumping for love
Posté le 06-06-2001 à 09:18:19  profilanswer
 

Et la ligne data.close() que j'ai rajoutee juste apres le 'if', elle resout le probleme ou pas ?

n°37267
Profil sup​primé
Posté le 06-06-2001 à 10:09:15  answer
 

javais deja essayé !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  c++ : bizarre bizarre

 

Sujets relatifs
[C/C++] Très grands débutants - Caractère bizarre[C++] Un problème bizarre ....
[JAVA] Probleme bizarre avec des threadsErrur bizarre !!!
Bizarre HTML !!!erreur ASP bizarre
[VC++6.0] problème de socket .... bizarre ...[ORACLE] Truc bizarre dans un EXPLAIN PLAN
Plus de sujets relatifs à : c++ : bizarre bizarre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR