我试图在计时器计数器的帮助下控制应用程序的执行长度。
我看到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);
}
为什么我的开始和结束时间都相同。
答案 0 :(得分:2)
来自localtime()
的手册页:返回值指向静态分配的结构,可能会被后续调用任何日期和时间函数覆盖。
您有两种选择,
localtime()
后,将返回值复制到另一个局部变量并第二次调用它。localtime_r()
。 (首选) 答案 1 :(得分:0)
您应该使用localtime_r
代替localtime
来获得两次不同的时间。
来自man localtime
:
返回值指向静态分配的结构,可能是 被后续调用任何日期和时间函数覆盖。 localtime_r()函数执行相同操作,但将数据存储在a中 用户提供的结构。