Печать времени и сохранение его в файл на С

Я использую ncurses и хочу сэкономить время в файле и распечатать его. Так что я делаю это:

typedef struct {
    struct tm* lastLoggedTime;
} Data_t;

void saveData(char *login, Data_t *Data)
{
    FILE *file = fopen(login, "wb");
    fwrite(Data, sizeof(Data_t), 1, file);
    fclose(file);
    file = NULL;
}

void loadSavedData(FILE *file, Data_t *Data)
{
    fread(Data, sizeof(Data_t), 1, file);
}

...

Data_t Data;
char strtime[32];
time_t timer;
time(&timer);
Data.lastLoggedTime = localtime(&timer);
saveData(login, &Data);

...

FILE *savefile = fopen(login, "rb");
loadSavedData(savefile, &Data);
strftime(strtime, 32, "%Y-%m-%d %H:%M:%S", Data.lastLoggedTime);
printw("Last login: %s\n", strtime);

Однако я получаю ошибку сегментации. GDB показывает, что происходит в strftime_l.c в строке 562.

1 ответ

Решение

Вы не можете записать структуру в файл, когда структура имеет указатели. Ваша структура для хранения ваших данных имеет указатель на данные времени, а не на фактические данные.

Если вы хотите сохранить данные, вы должны сами сериализовать структуру.

Другие вопросы по тегам