Как уже упоминалось, особая проблема заключается в том, что вам нужно передать time_t *
по местному времени.
Однако общая проблема заключалась в том, что у вас была неясная проблема на сложной линии, которая делала несколько вещей. Первое, что нужно попробовать, когда вы получили сообщение об ошибке, - это разбить строку на ее составные части, чтобы точно определить суть проблемы, например:
char boot_time[BUFSIZ];
// Temporary, putting the sizeof() call inline is normally better.
size_t boot_time_size = sizeof(boot_time);
time_t temp_time = table[0].time;
// Use a more descriptive name here.
struct tm *mytime = localtime(temp_time);
strftime(boot_time, boot_time_size, "%b %e %H:%M", mytime);
Таким образом, компилятор может сказать вам, какой вызов действительно доставляет вам проблемы. Как только вы поняли это, вы можете сжать его обратно, как считаете нужным, - я, вероятно, все равно оставлю вызов localtime () на отдельной линии, но это только я.