FREAD / FWRITE

FREAD / FWRITE - C++ - Programmation

Marsh Posté le 03-07-2005 à 14:14:10    

J'ai un problème qui m'a tenu toute la nuit et que je n'arrive pas à resoudre. Je vais fournir le code en enniter pour que vous puissiez juger.
J'ai un tableau de liste de chainées qui contient pour chaque cellule l'adresse d'un objet. Ces obets sont objet, pheromone , nourriture et obstacle et ils derivent tous du premier. J'aimerais sauvegarder la liste des tous les objets puis evidemment etre capable de relire et de reconstituer la liste chaînée. mes deux fonctions compilent et fonctionnent MAIS : la fonction d'enregistrement me dit qu'elle enregistre par exemple 20000 objets, la fonction read n'en recupere que 26 ... Alors evidemment mes connaissances en C++ sont lointaines et j'ai deja du mal avec les pointeurs alors si les fichiers s'y mettent je suis mal... Alors j'attends toutes vos critiques. D'avance Merci !
 


Message édité par eXarkun le 04-07-2005 à 20:56:57
Reply

Marsh Posté le 03-07-2005 à 14:14:10   

Reply

Marsh Posté le 03-07-2005 à 14:18:50    

tiens c'est du C ça. utilise les fstream. l'est dégueux ton code.
 
utilise "b" comme flag supplémentaire à l'ouverture, mosieur le windowsiens

Reply

Marsh Posté le 03-07-2005 à 14:25:18    

Il est dégeux par ce que j'utilise le C ou pour autre chose ?

Reply

Marsh Posté le 03-07-2005 à 14:28:47    

bin la fonction de 15.000km de logn, deja, ca le fait pas

Reply

Marsh Posté le 03-07-2005 à 14:30:16    

parce que même pour du C, c'est dégueux. surtout parce que tu ne vérifies ni les lectures, ni les écritures. ton emploi de feof/ferror est foireux. et ça fuit comme c'est pas permis. d'ailleurs tu fais des allocations à tout bout de champ quand y en as pas besoin.

Reply

Marsh Posté le 03-07-2005 à 14:33:37    

Bon je vais lire un peu de doc sur les fstreams. je vous redis quoi.

Reply

Marsh Posté le 03-07-2005 à 14:34:58    

t'as aussi le droit d'utiliser STL plutot que de sortir tes listes faite à la main.

Reply

Marsh Posté le 03-07-2005 à 14:57:25    

bon je dois decouvrir ausis ce que sont ces STL ... ;)

Reply

Marsh Posté le 03-07-2005 à 15:05:02    

navrant

Reply

Marsh Posté le 03-07-2005 à 15:06:19    

Pardon ?

Reply

Marsh Posté le 03-07-2005 à 15:06:19   

Reply

Marsh Posté le 03-07-2005 à 15:06:42    

s'il débute en C++ y'a rien de navrant

Reply

Marsh Posté le 03-07-2005 à 15:10:58    

Tout a fait je m'amuse avec ce ptit projet a etudier un peu le c donc voila ...
 
Par ailleurs ça Fonctionne ! j'ai pas encore otpimiser ni stream ni STL (faut que j'interroge le pti google ;) ) mais enfait c'etait le b qui me manquait.... Bien joué Taz ^^

Reply

Marsh Posté le 03-07-2005 à 15:11:22    

putain de bordel de merde c'est dur à mettre une balise CODE? :fou:  
 
A part ça félicitation pour ton code, il est magnifique :o  
(Cause: Taz a déja tout cité donc je vais pas le recité  :D )


Message édité par blastman le 03-07-2005 à 15:15:11

---------------
http://www.blastmanu.info
Reply

Marsh Posté le 03-07-2005 à 15:18:09    

Y a besoin de cette grande demonstration pour dire ça ? Cete balise de code c'est quoi ?

Reply

Marsh Posté le 03-07-2005 à 15:19:14    

chrisbk a écrit :

s'il débute en C++ y'a rien de navrant


je pense pas qu'il débute. Je vois pas pourquoi un débutant en python apprend tout de suite manipuler une list alors qu'on considère std::list<> comme un truc avancé. Je place les conteneurs de base de STL au même niveau que cout.

Reply

Marsh Posté le 03-07-2005 à 15:20:19    

bah c++ je suis debutant j'ai des souvenir de C ..je sais ça fait quelques années.

Reply

Marsh Posté le 03-07-2005 à 15:23:13    

on a bien vu que ton C++, c'est du C avec des delete et des bool

Reply

Marsh Posté le 03-07-2005 à 15:25:42    

bah en fait je veux juste voir les notions de POO avec ces maudits pointeurs.

Reply

Marsh Posté le 03-07-2005 à 15:35:48    

c'est pas lié. y a rien de maudit avec les pointeurs, juste des mal-appris.

Reply

Marsh Posté le 03-07-2005 à 15:38:35    

ça je suis tout afait d'accord. J'aurais pas la pretention de dire qu'on m'a mal appris juste que je reutlise avec des souvenirs et forcemetn c'est pas top ^^

Reply

Marsh Posté le 03-07-2005 à 16:13:45    

Concernant les fuites mémoires, d'après ce que je lis c'est lorsque l'on perd des adresses allouées dynamiquement ? Donc dans ma methode Load, j'utilise des constructeurs par recopie pour allouer (je pense) coorectement ... pourrais t'on m'en dire plus  ?

Reply

Marsh Posté le 03-07-2005 à 16:17:50    

case 4:
                                tmppheromone = new pheromone;
                                fread(tmppheromone,sizeof(pheromone),1,fp);
                                if(feof(fp)){end=true;}
                                if(ferror(fp)){error=true;}
                                if(!end&&!error)
                                {
                                     _new->contenu= new pheromone(*tmppheromone);
                                     noeud=elements[tmppheromone->GetY()][tmppheromone->GetX()];  
                                     if(!noeud)
                                     {
                                          elements[tmppheromone->GetY()][tmppheromone->GetX()]=_new;      
                                     }
                                     else
                                     {
                                          while(noeud->next)
                                          {
                                               noeud = noeud->next;
                                          }
                                          noeud->next = _new;
                                          _new->previous = noeud;
                                     }
                                }
                           break;  
 
 
il est ou le delete ?

Reply

Marsh Posté le 03-07-2005 à 16:23:35    

Ah tres Bonne question !,  
Effectivement le delete je ne peux pas le mettre ... ça fait planter !  
Dans la version précedente je mettais un delete tmppheromone juste avant le break c'etait la bonne methode ?
 
 
PS : J'ai remis une version qui 'fonctionne un peu mieux' mais sans l'histoire du delete (j'essaie de refaire le tout en dynamique pour comprendre d'ou vient le pb)


Message édité par eXarkun le 03-07-2005 à 16:29:55
Reply

Marsh Posté le 03-07-2005 à 16:40:50    

quel merde les listes chainées je m'y perd tout le temps  :sweat: et là je suis sur un projet je dois les utiliser fait chierrrr (au passage si quelqu'un a de bon truc la-dessus ainsi que des algo sur les arbres je suis preneur)
 
au fait pour la balise CODE:
http://forum.hardware.fr/hardwaref [...] m#t1088174
 
Mais bon, de toute facon je vois que même les dino. de HFR ne l'utilise pas...


Message édité par blastman le 03-07-2005 à 17:00:42

---------------
http://www.blastmanu.info
Reply

Marsh Posté le 03-07-2005 à 16:48:42    

Bah théoriquement avec ce que j'avais relu c'etait simple ... mais il doit y avoir une chose que je ne connais pas bien et qui me pète dans les mains ... :(

Reply

Marsh Posté le 03-07-2005 à 17:16:26    

blastman a écrit :

quel merde les listes chainées je m'y perd tout le temps  :sweat: et là je suis sur un projet je dois les utiliser fait chierrrr (au passage si quelqu'un a de bon truc la-dessus ainsi que des algo sur les arbres je suis preneur)
 
au fait pour la balise CODE:
http://forum.hardware.fr/hardwaref [...] m#t1088174
 
Mais bon, de toute facon je vois que même les dino. de HFR ne l'utilise pas...


 
Dedans tu trouvera ton bonheur concernant les algos sur les arbres et compagnies :
http://www.personal.kent.edu/%7Erm [...] rithm.html


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Marsh Posté le 03-07-2005 à 18:20:32    

nickel merci ;)


---------------
http://www.blastmanu.info
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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