Enregistrer et lire une structure dans un fichier - C - Programmation
Marsh Posté le 21-04-2004 à 00:08:58
fread et fwrite:
Code :
|
Marsh Posté le 21-04-2004 à 01:09:03
A la place de ton int, utilise un long (tu as moins de chance d'avoir de pb entre plate-formes sauf les 64 bits).
sous GCC, tu peut rajouter "__attribute__ ((packed));" à la fin de chaque ligne pour fixer la taille quelle que soit la config du compilateur.
Marsh Posté le 21-04-2004 à 11:47:34
mauvais conseil : dès qu'on fait du binaire, il n'y a plus de compatiblité viable : ordre des octets, différences des compilateurs, tailles des données ... si j'étais toi j'ignorerais le packed de gcc (tu veux faire quoi niveau portabilit"avec un truc comme ça ?)
au mieux pour la taille de ton int tu peux utilisé <stdint.h> pour fixer un peu la taille de ton int. mais sinon en binaire c'est peine perdu. si tu veux un format portable facilement, repasse en mode texte
Marsh Posté le 21-04-2004 à 14:29:52
Taz> Cela a toujours été un problème avec le c...
Dans mes progs, pour stocker, j'envoi également le sizeof de la variable à stocker. A la lecture plus de problème.
C'est plus viable que packed, je suis bien d'accord, mais c'est aussi plus complexe.
Marsh Posté le 21-04-2004 à 20:43:55
ok, fread et fwrite, par contre, size c'est la taille totale de ma structure, donc je dois fait une zone de la taille de chacun de ses composants ?
par contre, nmemb, c'est le nombre de structures que j'enregistre ?
Et enfin, si par exemple, j'ai un tableau de 100 caractère, mais que ma chaine en fait que 10, est-ce que cela va m'enregistrer un tableau de 100, ou un tabelau de 10 ? En fait, je pense que ce sera la première solution, sinon çà risque de foutre la mer** , mais il vaux mieux demander.
merci et @+++
Marsh Posté le 21-04-2004 à 20:47:52
fread/fwrite -> binaire -> vas lire/écrire invaraiblement size*nmemb byte (char).
écrire une personne
fwrite (&taz, sizeof taz, 1, out)
écrire un tableau
fwrite (ppl, sizeof ppl[0], sizeof ppl / sizeof ppl[0], out)
écire un pointeur
fwrite(ptr, sizeof *ptr, N, out);
Marsh Posté le 20-04-2004 à 22:17:11
Bonjour, je voudrais savoir s'il est possible d'enregistrer et ensuite de charger une structure dans un fichier ?
par ex
Si oui, comment faire ? Je pensais en utilisant un fprintf et pui un fscanf, mais je ne sais pas si c'ets possible.
Merci
@++