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

  FORUM HardWare.fr
  Programmation
  C++

  FREAD / FWRITE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

FREAD / FWRITE

n°1138596
eXarkun
Posté le 03-07-2005 à 14:14:10  profilanswer
 

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
mood
Publicité
Posté le 03-07-2005 à 14:14:10  profilanswer
 

n°1138601
Taz
bisounours-codeur
Posté le 03-07-2005 à 14:18:50  profilanswer
 

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

n°1138603
eXarkun
Posté le 03-07-2005 à 14:25:18  profilanswer
 

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

n°1138604
chrisbk
-
Posté le 03-07-2005 à 14:28:47  profilanswer
 

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

n°1138605
Taz
bisounours-codeur
Posté le 03-07-2005 à 14:30:16  profilanswer
 

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.

n°1138608
eXarkun
Posté le 03-07-2005 à 14:33:37  profilanswer
 

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

n°1138609
Taz
bisounours-codeur
Posté le 03-07-2005 à 14:34:58  profilanswer
 

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

n°1138618
eXarkun
Posté le 03-07-2005 à 14:57:25  profilanswer
 

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

n°1138626
Taz
bisounours-codeur
Posté le 03-07-2005 à 15:05:02  profilanswer
 

navrant

n°1138628
eXarkun
Posté le 03-07-2005 à 15:06:19  profilanswer
 

Pardon ?

mood
Publicité
Posté le 03-07-2005 à 15:06:19  profilanswer
 

n°1138629
chrisbk
-
Posté le 03-07-2005 à 15:06:42  profilanswer
 

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

n°1138634
eXarkun
Posté le 03-07-2005 à 15:10:58  profilanswer
 

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 ^^

n°1138635
blastman
just me !
Posté le 03-07-2005 à 15:11:22  profilanswer
 

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
n°1138638
eXarkun
Posté le 03-07-2005 à 15:18:09  profilanswer
 

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

n°1138639
Taz
bisounours-codeur
Posté le 03-07-2005 à 15:19:14  profilanswer
 

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.

n°1138641
eXarkun
Posté le 03-07-2005 à 15:20:19  profilanswer
 

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

n°1138643
Taz
bisounours-codeur
Posté le 03-07-2005 à 15:23:13  profilanswer
 

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

n°1138646
eXarkun
Posté le 03-07-2005 à 15:25:42  profilanswer
 

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

n°1138649
Taz
bisounours-codeur
Posté le 03-07-2005 à 15:35:48  profilanswer
 

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

n°1138651
eXarkun
Posté le 03-07-2005 à 15:38:35  profilanswer
 

ç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 ^^

n°1138669
eXarkun
Posté le 03-07-2005 à 16:13:45  profilanswer
 

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  ?

n°1138671
Taz
bisounours-codeur
Posté le 03-07-2005 à 16:17:50  profilanswer
 

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 ?

n°1138675
eXarkun
Posté le 03-07-2005 à 16:23:35  profilanswer
 

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
n°1138681
blastman
just me !
Posté le 03-07-2005 à 16:40:50  profilanswer
 

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
n°1138682
eXarkun
Posté le 03-07-2005 à 16:48:42  profilanswer
 

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 ... :(

n°1138691
Chronoklaz​m
Posté le 03-07-2005 à 17:16:26  profilanswer
 

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 !
n°1138699
blastman
just me !
Posté le 03-07-2005 à 18:20:32  profilanswer
 

nickel merci ;)


---------------
http://www.blastmanu.info
mood
Publicité
Posté le   profilanswer
 


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

  FREAD / FWRITE

 

Sujets relatifs
problème de freadfwrite episode 2
fopen... fread... fwrite...Besoin d'informations sur fread()
[c windows] pb avec fread [resolut]Quelles différences entre fread() et fgets() ?
[C] fread -> segmentation faultfwrite, fread...
[C] petit problème avec fwrite et fread (resolu)fread et fwrite [ - Job's Done - ]
Plus de sujets relatifs à : FREAD / FWRITE


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)