在c初始和睡眠结束时打印时间

时间:2016-05-24 19:45:46

标签: c date datetime time

我试图两次打印日期

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

为什么打印结果相同?

1 个答案:

答案 0 :(得分:4)

来自asctime手册页的

  

asctime()函数将故障时间值tm转换为   以null结尾的字符串,格式与ctime()相同。回报   value指向静态分配的字符串,该字符串可能是   被后续调用任何日期和时间函数覆盖。   asctime_r()函数执行相同操作,但将字符串存储在a中   用户提供的缓冲区,应该有至少26个字节的空间。

换句话说,您对asctime的第二次调用将其结果存储在存储第一次调用结果的同一缓冲区中。

如果您希望将结果保留供以后使用,请将结果复制到某处,或者在获得结果后立即打印,或使用asctime_r