首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ctime返回NULL

ctime返回NULL
EN

Stack Overflow用户
提问于 2016-10-22 04:50:16
回答 1查看 320关注 0票数 1

我正在使用ctime。但是,它总是返回null。所以它的核心是sprintf行。它早些时候起作用了。所以不确定为什么它会随机返回null。

我有以下代码片段:

代码语言:javascript
复制
int main()
{
 char avp_val[50];

 uint32_t date_value=1477069401;

sprintf(avp_val,"%s",ctime((time_t*)(&date_value)));

  return;
}
EN

回答 1

Stack Overflow用户

发布于 2016-10-23 16:32:42

它对我来说是有效的,但是代码仍然很奇怪。

我不明白你为什么要用uint32_t来存储时间。它应该是time_t (如果需要,也可以是int )。时间不是无符号的,它可以是负数(我听说1970年以前就有时间了)。它也不应该是32位;如果您使用you'll run out of time in 2038。现在大多数机器都使用64位time_t

您不应该使用ctime,因为它重用了相同的指针。我怀疑这就是您执行sprintf的原因,即复制字符串。更好的方法是使用ctime_r,它让您传入已分配的字符串。

这里有一种更简单的方法来做这件事。

代码语言:javascript
复制
#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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40200615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档