循环时长 - 时间控制 - C.

时间:2013-06-20 10:16:27

标签: c linux time

我试图在计时器计数器的帮助下控制应用程序的执行长度。 我看到time.h完成了这项工作。

#include <time.h>

#define SIZE 256
void main(){
        time_t curtime,endtime;
        struct tm *loctime, *etime;
        char buffer[SIZE];

        //TIME
        curtime = time(NULL);
        endtime = curtime + 2*60;
        loctime = localtime (&curtime);
        etime = localtime (&endtime);
        strftime (buffer, SIZE, "The time is %S \n", loctime);
        fputs (buffer, stdout);
        strftime (buffer, SIZE, "The time is %S.\n", etime);
        fputs (buffer, stdout);
}

为什么我的开始和结束时间都相同。

2 个答案:

答案 0 :(得分:2)

来自localtime()的手册页:返回值指向静态分配的结构,可能会被后续调用任何日期和时间函数覆盖

您有两种选择,

  1. 第一次调用localtime()后,将返回值复制到另一个局部变量并第二次调用它。
  2. 请改用localtime_r()(首选)
  3. localtime and localtime_r的手册页。

答案 1 :(得分:0)

您应该使用localtime_r代替localtime来获得两次不同的时间。

来自man localtime

  

返回值指向静态分配的结构,可能是          被后续调用任何日期和时间函数覆盖。          localtime_r()函数执行相同操作,但将数据存储在a中          用户提供的结构。