Bonjour, j’ai un fichier txt que je dois parcourir. Dans ce fichier se trouve des groupements de données. Chaque groupement (de taille variable) est placé dans une structure de taille adapté et déjà défini. J’ai 10 structure différentes.
Il faut donc que je parcoure ce fichier, que j’enregistre au fur et a mesure mes objets dans mes structure, tout en gardant arborescence.
Exemple d’un fichier:
Struc 0
=>Struc 1
==>Struc 2
====>Struc 3
====>Struc 4
=====>Struc 5
===>Struc 6
====>Struc 3
====>Struc 4
===>Struc 6
==>Struc 7
=>Struc 8
Chaque structure ressemble a ceci:
typedef struct {
NOP_MND ent_000; //Ceci est une structure pre defini
char* str_parent;
} STRUCT_000;
typedef struct {
NOP_LDF ent_001; //Ceci est une structure pre defini
char* str_parent;
} STRUCT_001;
Je precise bien que chaque structure est différente donc n’est pas de la même taille. et que cette arborescence n’est pas figé donc une fois, la struct 2 est la mère des struct 4 et 5 puis pourra être la mère de la struct 6…
J’ai essayé les liste chainé mais dans tous les exemples, pour garder un pointeur sur la précédente ou suivante structure, il faut connaitre le type, or moi, ce n’est pas figé…
pour le moment, j’arrive a enregistrer les différentes structures en faisant un malloc et realloc a chaque fois que j’agrandis mais je ne trouve pas comment faire les liens entre ces structures
STRUCT_000 *tabEnt_000;
tabEnt_000 = (STRUCT_000 *) malloc(sizeof(STRUCT_000));
...
STRUCT_001 *tabEnt_001;
tabEnt_001 = (STRUCT_001 *) malloc(sizeof(STRUCT_001));
...
while(NULL != fread (buffer,3,1,pFichier.lienFichierIn)){
...
if (count_ent_001 > 0)
tabEnt_001 = (STRUCT_001 *) realloc(tabEnt_001,sizeof(STRUCT_001)*(count_ent_001 + 1));
memcpy(&tabEnt_001[count_ent_001].ent_001,buffer,sizeof(NOP_LDF));
//EN GROS ICI IL FAUDRAIT UN TRUC DU GENRE (POUR GARDER QUI EST LA MERE):
//[b]tabEnt_001[count_ent_001].parent = &tabEnt_000;[/b] //Ceci ne fonctionne pas
//sachant qu'on peut aussi avoir &tabEnt_001 ou &tabEnt_002 etc...
...
}
quelqu’un a une idée?
merci
Edité le 21/07/2010 à 10:26