我正在使用ctime。但是它总是返回null。所以它在sprintf线上核心。它工作得更早。所以不确定为什么它会随机返回null。
我有以下代码段:
int main()
{
char avp_val[50];
uint32_t date_value=1477069401;
sprintf(avp_val,"%s",ctime((time_t*)(&date_value)));
return;
}
答案 0 :(得分:1)
它对我有用,但代码仍然很奇怪。
我不确定您为什么要使用uint32_t
来存储时间。它应为time_t
(如果必须,则为int
)。时间不是无条件的,也可能是负面的(我听说1970年之前有时间)。它也不应该是32位;如果你这样做you'll run out of time in 2038。这些天大多数机器使用64位time_t
。
您不应该使用ctime
,因为它会重复使用相同的指针。我怀疑你为什么要做sprintf
来复制字符串。更好的是,使用传递分配字符串的ctime_r
。
这是一种更简单的方法。
#include <stdio.h>
#include <time.h>
int main() {
time_t date_value = 1477069401;
char date_str[26];
ctime_r(&date_value, date_str);
puts(date_str);
return 0;
}