0

我正在尝试借助计时器计数器来控制应用程序的执行长度。我看到了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);
}

为什么我的开始时间和结束时间是一样的。

4

2 回答 2

2

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

你有两个选择,

  1. 在第一次调用 后localtime(),将返回值复制到另一个局部变量并第二次调用它。
  2. 改为使用localtime_r()(首选)

localtime 和 localtime_r的手册页。

于 2013-06-20T10:22:28.047 回答
0

您应该使用localtime_r而不是localtime获得两个不同的时间。

来自man localtime

返回值指向一个静态分配的结构,随后调用任何日期和时间函数可能会覆盖该结构。localtime_r() 函数的作用相同,但将数据存储在用户提供的结构中。

于 2013-06-20T10:22:42.470 回答