Enregistrement liste chaînée sur .bin - C - Programmation
Marsh Posté le 26-06-2006 à 16:24:36
enregistre dans ton fichier sous forme de tableau. comme ça t'écris tout en un seul fwrite.
Marsh Posté le 26-06-2006 à 23:24:16
Ce sont simplement des boucles tant que : par exemple pour la promo
Code :
|
Maintenant l'ecriture dans le fichier peut se faire de plusieurs manières différentes
sous forme binaire avec des fwrite mais il faut créer un enregistrement élève vide pour signaler la fin de la promo
sous forme CSV format texte, une ligne d'enregistrement comportant en premier le nom de la promo puis ensuite les noms des élèves séparés par des , ou des ; c'est le format le plus portable et facile à maintenir.
[edit] ce que j'ai écrit ne correspond pas exactement à ce qui est demandé, mais on peut fortement s'en inspirer [/edit]
Pour lire les fichiers, il faut "simplement" regarder comment ils ont été enregistrés et faire l'inverse.
Marsh Posté le 26-06-2006 à 23:28:20
misfu a écrit : Bonjour,
[Promo] Promotion 1 |
Faut bien que tu comprennes qu'une liste chaînée est un objet contenant des données plus l'adresse de la structure suivante. Mais cette adresse a été donnée lorsque la structure a été créée en mémoire donc il ne sert à rien de la sauvegarder sur disque.
Il te faut
- une fonction qui écrit les données de chaque cellule dans un fichier
- une fonction qui charge les données d'une cellule à partir d'un fichier
- une fonction qui crée la cellule en mémoire et la remplit des données chargées
Ensuite, pour la sauvegarde, tu boucles sur ta liste et tu écrits le fichier avec la fonction 1
Pour la restauration, tu boucles sur la fonction 2 et tu recrées ta liste avecla fonction 3
misfu a écrit : PS : un prof nous a suggéré d'utiliser une Union, mais on comprend pas toutes suptilités de celles-ci. |
Une union, pour résumer, c'est une variable pouvant être de plusieurs types
ex:
union { |
Tu peux mettre un char dans "toto.a", ou un "int" dans "toto.b" ou un double dans "toto.c" mais tu dois choisir. Tu ne peux pas avoir à la fois un char, un int et un double car la zone mémoire est la même pour les 3 membres. Cette zone est de la taille du membre le plus grand, à savoir un double dans cet exemple. De mon point de vue, cela sert très peu...
Marsh Posté le 27-06-2006 à 09:16:31
ReplyMarsh Posté le 27-06-2006 à 14:49:15
_darkalt3_ a écrit : Faut bien que tu comprennes qu'une liste chaînée est |
Ben non, on manipule des objets qui ont une certaine structure il me semble, des structures simples comme des entiers ou des floats, plus élaborées comme les tableaux et enfin "compliquées" comme les structures de listes chaînées.
Marsh Posté le 27-06-2006 à 15:27:53
_darkalt3_ a écrit : Ben non, C n'est pas orienté objet |
oui mais ne fait pas l'amalgame objet -> poo, et un langage peut ne pas etre orienté objet met quand meme offrir un support pour la poo
Marsh Posté le 27-06-2006 à 15:57:28
Pour moi le mot "structure" décrit l'organisation de l'entité, en C pour moi toujours, objet est équivalent à entité.
Marsh Posté le 27-06-2006 à 16:00:55
_darkalt3_ a écrit : comme par exemple |
ben le c++ par exemple, dans la mesure ou il propose plusieurs paradigmes de programmation dont le paradigme oo mais ne l'impose pas
c'est aussi le cas de php, et de sans doute beaucoup d'autre langage
Marsh Posté le 27-06-2006 à 16:10:31
exact.
Quoi qu'il en soit, quand on déclare
Code :
|
sémantiquement, on parle bien de structs, pas d'objets.
Je ne voulais pas qu'on mélange les choses.
Marsh Posté le 27-06-2006 à 16:27:19
_darkalt3_ a écrit : Je ne voulais pas qu'on mélange les choses. |
J'ai dit "objet" dans un cadre généraliste et schématique adapté au niveau de l'auteur (sans vouloir le critiquer car on a tous été débutants un jour).
J'aurais pu aussi dire "ensemble" ou un autre synonyme. Je voulais juste essayer de schématiser la notion de "liste chaînée" mais je ne voulais pas parler d'objet tels qu'on les voit en C++ ou autres.
Bon, on va pas couper les cheveux de Lex Luthor en 4, ce n'est pas le sujet du topic...
Marsh Posté le 26-06-2006 à 15:14:30
Bonjour,
pour un projet étudiant, je dois entre autre faire une fonction permettant de sauvegarder des informations en listes chaînées sur un fichier binaire.
seulement voilà, je ne m'y connais pas beaucoup en fichier (surtout binaires) et l'organisation de mes differentes structures m'empêchent de faire un truc "basique".
voici ces structures :
Le but serait d'acrire sur un fichier binaire : [Eleve 1] [Absence 1] [Absence 2] [Absence n] [Eleve 2] [Absence 1] .... [Eleve n]
Bien sur, nous devons faire une autre fonction permettant de charger ces informations :
[Promo] Promotion 1
[Eleve] NomEleve1 PrénomEleve1
[Eleve] NomEleve2 PrénomEleve2
[Promo] Promotion 2
...
On est un petit peu perdus dans tout ça, merci d'avance pour votre aide.
misfu
PS : un prof nous a suggéré d'utiliser une Union, mais on comprend pas toutes suptilités de celles-ci.