我收到编译错误:(83)错误:指针/整数组合不正确:arg#1。
以下是执行此操作的代码:
char boot_time[BUFSIZ];
... 第83行:
strftime(boot_time, sizeof(boot_time), "%b %e %H:%M", localtime(table[0].time));
其中table是结构,time是time_t成员。
我读到“不正确的指针/整数组合”意味着该函数未定义(因为在C中,函数在找不到它们时返回int),而正常的解决方案是包含一些库。 strftime()和localtime()都在time.h中,而string.h中的sizeof(),我已经包含了这两个(以及stdio.h)我完全被这里难倒了。
答案 0 :(得分:4)
struct tm * localtime ( const time_t * timer );
正确的usage是:
time_t rawtime;
localtime(&rawtime);
在您的情况下:localtime(&(table[0].time))
答案 1 :(得分:1)
localtime
需要time_t*
,因此传递&table[0].time
(地址,而不是值)。
答案 2 :(得分:1)
问题似乎是对本地时间的调用。此函数需要time_t
指针而不是值。我相信您需要按以下方式拨打电话
localtime(&(table[0].time))
当地时间签名
struct tm * localtime ( const time_t * timer );
对localtime API的引用
答案 3 :(得分:0)
正如其他人所提到的,特别的问题是您需要将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()调用保持在自己的行上,但那只是我。