Тема: [pure C] Запис структури з вказівниками до файлу
Доброго дня!
Придумав собі наступну проблему.
struct CONFIG {
    char *name;
    int val;
    char *password;
    // char *c_test;
    // int *i_test;
    // double *d_test;
    // ... і ще 100 вказівників
};Наприклад маємо структуру, а в ній ~100 і більше полей, типу вказівника (по адресах знаходяться дані, які і потрібно записати/зчитати у файл). Ну, і якось не варіант 100 раз робити fread/fwrite, глупо це..
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MLC 20
struct CONFIG {
    char *name;
    int val;
    char *password;
    // char *c_test;
    // int *i_test;
    // double *d_test;
    // ... і ще 100 вказівників
};
struct CONFIG *getCongif() {
    struct CONFIG *sp = malloc(sizeof(struct CONFIG));
    sp->name = strcpy(memset(malloc(MLC), 0, MLC), "root");
    sp->val = 1488;
    sp->password = strcpy(memset(malloc(MLC), 0, MLC), "qwerty");
    return sp;
}
int main() {
//  ------------------------------------------------------------------
    struct CONFIG *s = getCongif();
    FILE *fw, *fr;
    fw = fopen("\\Release\\cfg.bin", "wb");
    fwrite(s->name, MLC, 1, fw);
    fwrite(&s->val, sizeof(int), 1, fw);
    fwrite(s->password, MLC, 1, fw);
    fclose(fw);
    free(s->name);
    free(s->password);
//  ------------------------------------------------------------------
    struct CONFIG *o = malloc(sizeof(struct CONFIG));
    o->name = malloc(MLC);
    o->password = malloc(MLC);
    fr = fopen("\\Release\\cfg.bin", "rb");
    fread(o->name, MLC, 1, fr);
    fread(&o->val, sizeof(int), 1, fr);
    fread(o->password, MLC, 1, fr);
    printf("%s - %d - %s\n", o->name, o->val, o->password);
    fclose(fr);
    free(o->name);
    free(o->password);
//  ------------------------------------------------------------------
    return 0;
}Як елегантно можна вирішити це питання (аби одним махом обробити всю структуру)?
