C++ 通过strftime从结构复制到数组无效
我有一个小函数,它获取系统dateTime并将其进一步分解为日期和时间,然后将其存储到三个字符数组中 但对于第一个数组,从结构中复制似乎没有问题,但对于其余的数组,复制仍然是空的。请帮忙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
#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