我正在使用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)
不要将指针强加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*)沉默编译器警告使警告静音,它没有解决问题.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |