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

  FORUM HardWare.fr
  Programmation
  C++

  petit probleme d'ecriture dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petit probleme d'ecriture dans un fichier

n°1061769
carot0
Posté le 26-04-2005 à 19:34:32  profilanswer
 

bonjour, voila j'ai fait un petit prog et j'ai besoin de lire et ecrire dans un fichier
mais probleme : les lectures ce font tres bien mais pour ecrire il se passe rien.
 

Code :
  1. dans le .h
  2. def de la classe
  3. ..
  4. fstream file;
  5. ...
  6. dans le .cpp
  7. ...//contructeur d'une classe
  8. string dossier = "test";
  9. file.open(dossier.c_str(), ios::out|ios::in);
  10. ...
  11. //une metodes de cette classe
  12. ...
  13. char buffer[512];
  14. file.getline(buffer,512);
  15. ...
  16. //une metodes de cette classe
  17. ...
  18. file.seekp(0,ios::beg);//positionnement au début
  19.     file<<"test";
  20. ...


 
voila j'espers que vous pourez m'aider a comprendre pourquoi je peut pas ecrire ( ou plutot pourquoi ca ecrit pas car j'ai pas d'erreurs! )


Message édité par carot0 le 26-04-2005 à 20:39:26

---------------
In a world without walls and fences, who needs Windows and Gates
mood
Publicité
Posté le 26-04-2005 à 19:34:32  profilanswer
 

n°1061781
Joel F
Real men use unique_ptr
Posté le 26-04-2005 à 19:40:47  profilanswer
 

ostream pour ecrire, istream pour lire ....

n°1061797
Taz
bisounours-codeur
Posté le 26-04-2005 à 19:51:06  profilanswer
 

dossier.data() -> dossier.c_str()

n°1061831
carot0
Posté le 26-04-2005 à 20:13:45  profilanswer
 

Joel F a écrit :

ostream pour ecrire, istream pour lire ....


moi je veux lire et ecrire d'ou le fstream et non un ofstream ou ifstream
 
taz : y a t'il un reel interet de prendre c_str() a la place de data() ?


---------------
In a world without walls and fences, who needs Windows and Gates
n°1061849
Taz
bisounours-codeur
Posté le 26-04-2005 à 20:30:59  profilanswer
 

oui, parce que .data() n'est pas forcément terminé par un '\0'

n°1061872
carot0
Posté le 26-04-2005 à 20:39:02  profilanswer
 

Taz a écrit :

oui, parce que .data() n'est pas forcément terminé par un '\0'


ok, j'ignorais totalement ce fait, merci
 
si non pour mon petit soucis ?
je précise que les lectures se font sans problemes


---------------
In a world without walls and fences, who needs Windows and Gates
n°1061899
el muchach​o
Comfortably Numb
Posté le 26-04-2005 à 21:09:53  profilanswer
 

T'aurais pas ouvert ton fichier en binaire par hasard ? (je sais plus, faut que je regarde la doc)

n°1061902
LordHarryP​otter
Posté le 26-04-2005 à 21:17:03  profilanswer
 

Heu je sais que pour les ostream faut faire à la fin un endl pour etre sur qu'il écrit, sinon c'est assez dangeureux d'ouvrir un fichier en lecture et écriture :s
Pour finir pour etre bien sur qu'il a écrit un .close(); et après un .clear();

n°1061909
carot0
Posté le 26-04-2005 à 21:39:27  profilanswer
 

el muchacho a écrit :

T'aurais pas ouvert ton fichier en binaire par hasard ? (je sais plus, faut que je regarde la doc)


ha bas oui pt etre ! faut que je verifie.
 
edit : non c'est bon par defaut il l'ouvre en text mode


Message édité par carot0 le 26-04-2005 à 21:43:31

---------------
In a world without walls and fences, who needs Windows and Gates
n°1061910
carot0
Posté le 26-04-2005 à 21:40:11  profilanswer
 

LordHarryPotter a écrit :

Heu je sais que pour les ostream faut faire à la fin un endl pour etre sur qu'il écrit, sinon c'est assez dangeureux d'ouvrir un fichier en lecture et écriture :s
Pour finir pour etre bien sur qu'il a écrit un .close(); et après un .clear();


le close est dans le destructeur de ma classe et le clear je m'en suis jamais servis
 
 
edit ; si tu connais une meilleur solution pour lire un fichier puis ecrire dedant je suis prenneur !


Message édité par carot0 le 26-04-2005 à 21:45:14

---------------
In a world without walls and fences, who needs Windows and Gates
mood
Publicité
Posté le 26-04-2005 à 21:40:11  profilanswer
 

n°1061925
skelter
Posté le 26-04-2005 à 22:17:01  profilanswer
 

pas la peine d'appeler close() (et encore moins clear) dans le destructeur, il est appelé lors de la destruction de ton std::fstream
 
montre plus de code, la il y a aucun probleme

n°1061929
carot0
Posté le 26-04-2005 à 22:28:07  profilanswer
 

skelter a écrit :

pas la peine d'appeler close() (et encore moins clear) dans le destructeur, il est appelé lors de la destruction de ton std::fstream
 
montre plus de code, la il y a aucun probleme


dans ce que j'ai mis y a tt ce que je fait avec fstream
 

Code :
  1. //ds contruct
  2. file.open(dossier.c_str(), ios::in|ios::out);
  3. //ds methode
  4. do
  5. file.getline(buffer,512);
  6. while;
  7. file.getline(buffer,512);
  8. file.getline(buffer,512);
  9. do
  10. file.getline(buffer,512);
  11. while;
  12. //ds une autre methodes
  13. file.seekp(0,ios::beg);//positionnement au début
  14. file<<"test"<<endl;
  15. //ds destruct
  16. file.close


 
voila les seules utilisation que je fait des fstream le reste du code n'est pas important ( enfin pas pour les fstream ) a part les fstream il y a juste des manipulations de buffer et de chaines de caracteres
toutes mes methodes sont appelé, avec des cout je vois les contenu de mes buffers qui contiennent bien les parties desiré de monfichiers
je precise que je boss avec dev c++ 4.9.9.2


Message édité par carot0 le 26-04-2005 à 22:31:02

---------------
In a world without walls and fences, who needs Windows and Gates
n°1061937
skelter
Posté le 26-04-2005 à 22:36:08  profilanswer
 

essay ce code dans un programe à part, tu veras que ca fonctionne

n°1061966
carot0
Posté le 26-04-2005 à 22:52:21  profilanswer
 

skelter a écrit :

essay ce code dans un programe à part, tu veras que ca fonctionne


apres test bas ca ne marche pas du tout je comprends plus rien !!

Code :
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <string>
  4. #include <fstream>
  5. using namespace std;
  6. int main(int argc, char *argv[])
  7. {
  8.     fstream file("D:\\desktop.ini", ios::in|ios::out);
  9. file<<"test";
  10. system("PAUSE" );
  11.     return EXIT_SUCCESS;
  12. }


 
ce code la n'ecrit rien ds mon fichier desktop.ini


---------------
In a world without walls and fences, who needs Windows and Gates
n°1061979
skelter
Posté le 26-04-2005 à 22:58:45  profilanswer
 

les test te dirons
if ( !file ) ...
if ( file<<"test" ) ...

n°1061990
carot0
Posté le 26-04-2005 à 23:09:22  profilanswer
 

skelter a écrit :

les test te dirons
if ( !file ) ...
if ( file<<"test" ) ...


deja le 1er test est faux! doncfile a une valeur differente de 0 ( donc le fichier est bien ouvert )
et if(file<<"test" ) est passé donc file<<"test" retourne bien une valeure aussi


---------------
In a world without walls and fences, who needs Windows and Gates
n°1062005
skelter
Posté le 26-04-2005 à 23:22:08  profilanswer
 

la je vois pas  :??: , j'ai essayé avec devcpp 4.9.8.0 et ca marche

n°1062034
carot0
Posté le 26-04-2005 à 23:33:27  profilanswer
 

skelter a écrit :

la je vois pas  :??: , j'ai essayé avec devcpp 4.9.8.0 et ca marche


ca peut etre ca qui gene : ios::in|ios::out
edit : avec juste ios::out ca ecrit !
 
edit 2 : y a moyen de changé la facon d'ouvrir un fichier en cour de prog ? genre ouvert en lecture au debut puis en ecriture a la fin ?
 
apres 2-3 test j'ai trouvé ca sous visual meme probleme!
avec

Code :
  1. fstream file("D:\\desktop.ini", ios::out|ios::in);
  2.    
  3.    
  4.    
  5. file<<"test6";

 
ca ecrit et  

Code :
  1. fstream file("D:\\desktop.ini", ios::out|ios::in);
  2.    
  3.     file.getline(buffer,512);
  4.    
  5. file<<"test6";


ca ecrit plus !


Message édité par carot0 le 27-04-2005 à 00:08:14

---------------
In a world without walls and fences, who needs Windows and Gates
n°1062185
skelter
Posté le 27-04-2005 à 07:50:07  profilanswer
 

file.seekp(0);  :??: t'y avais pensé pourtant au debut

n°1062514
carot0
Posté le 27-04-2005 à 11:46:44  profilanswer
 

skelter a écrit :

file.seekp(0);  :??: t'y avais pensé pourtant au debut


ca change rien.
 

Code :
  1. char buffer[512];
  2.          fstream file("D:\\desktop.ini", ios::out|ios::in);
  3.          
  4.          file.getline(buffer,512);
  5.           file.seekp(0);
  6.          file<<"test6";


 
ce code ecrit rien!


---------------
In a world without walls and fences, who needs Windows and Gates

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

  petit probleme d'ecriture dans un fichier

 

Sujets relatifs
Problème installation classe avec JREproblème avec les layers (Front Page)
Comment zipper un fichier à partir de la fonction ShellProblème concaténation variables [RESOLU]
Problème : Fonction Copy PHPProblème installation Apache et PHP
probleme avec les sessions[JAVA] Euh... Problème d'affichage [résolu]
[PERL] lire fichier en paragrapheErreur de lecture fichier SQL [résolu]
Plus de sujets relatifs à : petit probleme d'ecriture dans un fichier


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