我有一个小函数,它获取系统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
答案 0 :(得分:0)
在最后两种情况下,您不允许strftime复制足够的字符。 10和8分别不足以存储输出加NULL终止符。这就是为什么数组内容未定义的原因。在第一种情况下,你允许足够的空间。