Bonjour,
Devant faire rentrer dans différents fichiers des listes de structures différentes ( ex : fichier1 -> listeA (contenant x structZ), fichier2 -> listeB(contenant x structY), .. ) j'ai voulu faire abstraction du type de la structure pour ne devoir créer qu'une fonction d'écriture et une de lecture. Pour la version ecriture pas de problème.. je passe le nom du fichier, la taille de la structure et la liste chainée et l'écriture dans le fichier est nickel à l'aide de la fonction fwrite.
Par contre lors de la lecture, je dois passer un buffer à fread mais je ne connais que la taille de la structure mais je n'ai pas son type sous main!
Comment puis-je réserver suffisement d'espace mémoire un pointeur sur void avec un malloc égal à la taille des structures?
Voici un bout de code qui ressemble au mien (je n'ai pas mon code sous la main..)
J'espère que quelqu'un pourra m'aider..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 .. .... ...... #define MAXITEMS 200 liste *FichierLecture(char *FichierPath, size_t structSize) FILE *f; STRUCTINCONNU mem = (STRUCTINCONNU *)malloc(MAXITEMS * structSize); f = fopen(FichierPath,"r"); fread(mem, structSize, MAXITEMS, f) fclose(f); // Mise en liste utilisant des pointeurs sur void .. .... ...... liste *l = ...; .. .... ....... free(mem); return l; }
En vous remerciant,
Davide
Partager