打印时间并将其保存在C中的文件中

时间:2016-06-16 22:55:01

标签: c time

我使用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显示在第562行的strftime_l.c中发生。

1 个答案:

答案 0 :(得分:1)

当结构具有指针时,您无法将结构写入文件。保存数据的结构有一个指针指向时间数据,而不是实际数据。

如果要保存数据,则必须自行序列化结构。