aide pour création forcée d'un fichier txt (et écriture)...

aide pour création forcée d'un fichier txt (et écriture)... - C++ - Programmation

Marsh Posté le 26-12-2004 à 22:49:19    

De la même façon que pour "forcer" l'affichage d'un printf() ou d'un cout << "texte_à_afficher", il faut utiliser un "flush" (cout << "texte_à_afficher" << flush;), comment force-t-on la création d'un fichier txt et l'écriture dans ce fichier?  
 
Car mon prog utilise une grande boucle principale qui met plusieurs semaines avant d'aboutir. A chaque tour de boucle, un résultat doit être inscrit dans un fichier txt. Malheureusement, ce fichier txt n'est créé et rempli qu'une seule fois à la fin de la boucle (tous les résultats sont alors inscrits d'un coup). C'est très embêtant... Comment y remédier?  
 
Merci! :)

Reply

Marsh Posté le 26-12-2004 à 22:49:19   

Reply

Marsh Posté le 27-12-2004 à 01:49:44    

c'est faux.
 
si tu fais un
 
for(i)  
{
  ofstream out(nom_fonction_de(i));
}
 
un nouveau fichier sera créé, écrit, et fermé à chaque itération

Reply

Marsh Posté le 27-12-2004 à 10:13:08    

c'est pas faux sinon j'aurais pas posté! (je vais pas mentir quand même...)
 
J'utilise déjà ta méthode Taz, je crois... Vérifie stp, voilà ma fonction Ecrire, appelée à chaque tour de boucle :
 
void Ecrire(ZZ p)
{
ofstream Fichier("résultats intermédiaires.doc" );
Fichier << p;
Fichier.close;
}

 
C'est bien la même chose non? J'oublie rien?  
En tous cas, je confirme : cette fonction ne marche pas correctement. Le fichier n'est créé et rempli qu'à la fin de la boucle!!
 
 
NOTE : j'utilise des nombres de classe ZZ (très grands entiers de plusieurs centaines de milliers de chiffres) et c'est eux que je voudrais inscrire au fur et à mesure dans un fichier, à chaque tour de boucle...


Message édité par initial le 27-12-2004 à 10:43:32
Reply

Marsh Posté le 27-12-2004 à 12:49:26    

Fichier.close; est une NOP et même si c'était Fichier.close(); ça serait inutile.
 
Et tu confirmes que dalle : si tu écrases le même fichier en permanence ...

Reply

Marsh Posté le 27-12-2004 à 17:28:12    

Excuse Taz. Je me suis mal exprimé...
 
Mon fichier est écrasé à chaque itération par un autre fichier. C'est bien ce que je voulais faire. Mais le problème c'est qu'en pratique, seul le dernier fichier apparaît à la fin de la boucle.  
 
Dans le fichier se trouve tout simplement le n° du tour de la boucle (tour1, tour2, etc). J'ai fait ce système pour savoir à quel tour j'en suis. Si je n'ai accès qu'au dernier fichier et ce, à la fin de la boucle, ça n'a plus d'intérêt...

Reply

Marsh Posté le 27-12-2004 à 17:30:48    

ben tu ferais mieux de dégager tout ça : tu lances ton programmes en redirigeant dans un fichier. Et toi dans ton programme, tu te contentes de faire des cout. et voilà. un système de log de base quoi

Reply

Marsh Posté le 27-12-2004 à 17:36:54    

oui je comprends mais ça ne me convient pas trop en fait...
moi je sais faire mais si je distribue mon prog à beaucoup de gens, la majorité d'entre eux ne saura pas faire. donc j'aimerais tout préparer/organiser via le programme et non des commandes ms-dos supplémentaires. Ainsi l'utilisateur de base n'aura qu'à lancer le programme d'un simple double-cliqué. (et ça, tout le monde sait faire sans problème)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed