Я записываю функцию, которая должна сохранять 3 структуры (2 из них являются массивами структур) в двоичном файле. Вот моя функция:Сохранение нескольких структур в двоичный файл (C)
void saveFile(Struct1 *s1, Struct2 *s2, Struct3 s3) {
FILE *fp = NULL;
fp = fopen("save.bin", "w+b");
if (fp == NULL) {
printf("Save failed.\n");
}
fwrite(s1, sizeof(Struct1), struct3.nElements, fp);
fwrite(s2, sizeof(Struct2), NELEMENTS, fp);
fwrite(&s3, sizeof(Struct3), 1, fp);
printf("Save done.\n");
}
s1
имеют struct3.nElements
, s2
имеют NELEMENTS
(это константа) и s3
только одна структура, а не массив. Когда я пытаюсь открыть save.bin с помощью HexEditor, он дает очень разные результаты от тех, которые я ожидал, мне интересно, правильно ли я использовал функцию fwrite
, особенно для массива структур.
Какие результаты вы получили с помощью шестнадцатеричного редактора, результаты которого вы ожидали и что вы записали в свой файл. Вы должны поделиться этой информацией с нами, если хотите получить ответы. Читайте о [MCVE] (http://stackoverflow.com/help/mcve). –
@MichaelWalz, когда я использую HexEditor Я вижу случайные символы, некоторые правильные поля 'struct2', а также пути некоторых программ, таких как Visual Studio. Очевидно, я ожидаю увидеть правильные значения структур. – THZ
Покажите, как вы называете 'saveFile'. Вероятно, проблема. И покажите объявления 'struct1',' struct2' и 'struct3'. –