通过strftime从struct复制到数组不起作用

时间:2014-04-28 10:15:51

标签: c++ visual-c++

我有一个小函数,它获取系统dateTime并将其进一步分解为日期和时间,并将其存储到三个char数组中。

但是对于第一个数组,复制似乎从结构中可以很好,但对于其余的它只是保持为空。任何帮助PLZ。

#Define MAXLENGTH 50
int _tmain(int argc, _TCHAR* argv[])
{
    if(true){
        char sysDateTime [MAXLENGTH];
        char sysDate [MAXLENGTH];
        char sysTime [MAXLENGTH];

        time_t now = time(0);
        struct tm  tstruct;
        tstruct = *localtime(&now);

        strftime(sysDateTime, 20, "%d/%m/%Y %X", &tstruct);
        strftime(sysDate, 10, "%d/%m/%Y", &tstruct);
        strftime(sysTime, 8, "%X", &tstruct);

        std::cout<<sysDateTime;
        std::cout<<sysDate;
        std::cout<<sysTime;
    }
    getchar();
}

输出:

28/04/2014 15:14:20

1 个答案:

答案 0 :(得分:0)

在最后两种情况下,您不允许strftime复制足够的字符。 10和8分别不足以存储输出加NULL终止符。这就是为什么数组内容未定义的原因。在第一种情况下,你允许足够的空间。