C++ 通过strftime从结构复制到数组无效

C++ 通过strftime从结构复制到数组无效,c++,visual-c++,C++,Visual C++,我有一个小函数,它获取系统dateTime并将其进一步分解为日期和时间,然后将其存储到三个字符数组中 但对于第一个数组,从结构中复制似乎没有问题,但对于其余的数组,复制仍然是空的。请帮忙 #Define MAXLENGTH 50 int _tmain(int argc, _TCHAR* argv[]) { if(true){ char sysDateTime [MAXLENGTH]; char sysDate [MAXLENGTH]; ch

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

但对于第一个数组,从结构中复制似乎没有问题,但对于其余的数组,复制仍然是空的。请帮忙

#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();
}

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

strftime的第二个参数是缓冲区大小,即sysDateTime的大小等,而不是您输入的神奇数字。
28/04/2014 15:14:20