ctime随机返回NULL

Gau*_*uri 0 c datetime

我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 5

不要将指针强加uint32_t给a time_t.使用实际的time_t,所以64位系统time_t ctime不会读取四个字节的垃圾作为纪元时间的一部分:

int main()
{
    char avp_val[50];

    time_t date_value=1477069401;

    sprintf(avp_val,"%s",ctime(&date_value));
    // Or, because it's what you're doing anyway, skip sprintf:
    // strcpy(avp_val, ctime(&date_value));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

投射到(time_t*)沉默编译器警告使警告静音,它没有解决问题.