【问题标题】:ctime(x) = ctime(x-600) why?ctime(x) = ctime(x-600) 为什么?
【发布时间】:2012-05-18 16:42:45
【问题描述】:

当我使用“ctime”时,curTime 和 pastTime 得到相同的字符串结果,即使 curTime 和 pastTime 的实际值相差 600 秒。

如何在使用 ctime 时获得相同的字符串时间?

谢谢

struct _timeb timebuffer;

_ftime(&timebuffer);

const time_t  curTime = (const time_t)timebuffer.time;
const time_t  pastTime = curTime - (const time_t)600;

s.Format("%d  %s\n%d  %s", curTime, ctime(&curTime), pastTime, ctime(&pastTime) );
MessageBox(s);

【问题讨论】:

    标签: c++ ctime


    【解决方案1】:

    ctime 返回一个可以静态分配的字符串。

    因此,您的两个调用之一是覆盖另一个生成的字符串。 您需要将其拆分为两个打印语句,或将ctime 的返回值复制(字符串复制)到临时文件中。

    【讨论】:

    • ...或使用strftime,这需要您管理缓冲区。
    • 我最终都使用了 sprintf。但是 strftime 看起来更容易使用,只使用我想要显示的内容。谢谢
    猜你喜欢
    • 2013-01-12
    • 2016-07-05
    • 2011-06-12
    • 2017-04-06
    • 2012-02-24
    • 2012-02-12
    • 2013-02-21
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多