Нет простого способа сохранить такую структуру в файл. Например, даже поле sample.name
имеет размер 4 (в зависимости от архитектуры), а то, что вы, вероятно, хотите сохранить, - это содержимое памяти, на которое указывает sample.name
.
Вот пример кода, который сделает такую вещь. Вам придется продублировать процесс, чтобы сохранить всю структуру.
void saveToFile(FILE *fh, sample s)
{
fwrite(s.type, sizeof(char), fh);
int nameSize = strlen(s.name); // get the length of the name field
fwrite(nameSize, sizeof(size_t), fh); // write the length of the name field
frwite(s.name, nameSize * sizeof(char), fh); // write the content of the name field
// continue with other fields
}
Идея состоит в том, чтобы сохранить размер следующей структуры и затем записать содержимое. Чтобы получить информацию из файла, вы читаете размер, а затем получаете данные.