我试图两次打印日期
char *init_time=getTime();
//do something and sleep 5 sec
char *end=getTime();
printf("train 2 started at %s and arrived at %s\n",init_time, end);
获取时间:
char* getTime(){
time_t result;
result = time(NULL);
return asctime(localtime(&result));
}
为什么打印结果相同?
答案 0 :(得分:4)
:
asctime()函数将故障时间值tm转换为 以null结尾的字符串,格式与ctime()相同。回报 value指向静态分配的字符串,该字符串可能是 被后续调用任何日期和时间函数覆盖。 asctime_r()函数执行相同操作,但将字符串存储在a中 用户提供的缓冲区,应该有至少26个字节的空间。
换句话说,您对asctime的第二次调用将其结果存储在存储第一次调用结果的同一缓冲区中。
如果您希望将结果保留供以后使用,请将结果复制到某处,或者在获得结果后立即打印,或使用asctime_r