Печать времени и сохранение его в файл на С
Я использую 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 ответ
Решение
Вы не можете записать структуру в файл, когда структура имеет указатели. Ваша структура для хранения ваших данных имеет указатель на данные времени, а не на фактические данные.
Если вы хотите сохранить данные, вы должны сами сериализовать структуру.