Ce problème est appelé « serializing » et peut aller de trivial vraiment compliqué. Si votre structure de données est autonome, par exemple un groupe de pixels dans un tableau et que vous connaissez les dimensions du tableau, vous pouvez simplement vider les données et les relire.
Si vous avez par exemple des listes liées, ou des pointeurs de toutes sortes, dans vos données, ces pointeurs ne pointeront vers rien de valable une fois que vous les aurez relues. C'est là qu'une approche plus formelle de la sérialisation commence à avoir du sens.
Cela peut aller de l'enregistrement au format de fichier, à l'utilisation de bases de données, à la conversion au format XML ou autre format hiérarchique, etc. Qu'est-ce qu'une solution OK dépend complètement de ce type de données que vous avez, et quels types d'opérations que vous faites dessus plus comment souvent vous prévoyez d'écrire, puis relire à partir du disque. (.. Réseau ou tout ce que vous faites)
Si ce que vous avez est un blob trivial de données, et vous voulez juste écrire la façon la plus simple possible, utilisez fwrite():
fwrite(my_pointer, MEMORY_SIZE, 1, fp);
et puis fread() pour lire les données de retour. Voir aussi une connexe (plus ou moins liée selon l'évolution de vos besoins) serializing question on StackOverflow.
Correct serialization résout également the problems that appear lorsque différents types de processeurs sont supposés être capables de lire les données les uns des autres. Une sérialisation correcte en C est beaucoup plus compliquée que dans d'autres langues. En Lisp par exemple, toutes les données et le code sont déjà sérialisés. En Java, il existe des méthodes pour vous aider à sérialiser vos données.Les propriétés de C qui en font un langage approprié pour la haute performance et la programmation des systèmes rendent également plus difficile à utiliser pour d'autres choses.
Contient-elle des pointeurs? – ruslik
Oui, il contient des pointeurs. Mais je pense que je peux reprogrammer certaines parties pour l'éviter. Merci pour toutes les réponses, ça m'a beaucoup aidé! – kristus