Chinaunix
标题:
time_t转成字符串问题
[打印本页]
作者:
wuzen007
时间:
2013-11-27 15:51
标题:
time_t转成字符串问题
程序如下所示:
time_t begin_time,end_time;
begin_time = time(NULL);
end_time = begin_time+100;
struct tm *local = NULL;
struct tm *end = NULL;
char begin_tm[20]={0},end_tm[20]={0};
local = localtime(&begin_time);
end = localtime(&end_time);
strftime(begin_tm,20,"%Y%m%d%H%M%S",local);
strftime(end_tm,20,"%Y%m%d%H%M%S",end);
cout << "开始时间:" << begin_tm << "结束时间:" << end_tm <<endl;
打印出来发现,begin_tm 和 end_tm 居然是一样的,如果单独打印一个的话则都是正确的,想问下程序哪些写的有问题?
作者:
井蛙夏虫
时间:
2013-11-27 18:00
回复
1#
wuzen007
localtime不是可重入的,用localtime_r吧
man localtime可以看到说明
作者:
wuzen007
时间:
2013-11-27 18:39
看到了还真不知道原来是这样,多问下为什么会是不可重入呢
回复
2#
井蛙夏虫
作者:
bruceteen
时间:
2013-11-28 08:15
struct tm *local = NULL;
struct tm *end = NULL;
local = localtime(&begin_time);
end = localtime(&end_time);
改为
struct tm local = *localtime(&begin_time);
struct tm end = *localtime(&end_time);
作者:
wuzen007
时间:
2013-11-28 08:43
这样子写主要是什么区别呢
回复
4#
bruceteen
作者:
core1011
时间:
2013-11-28 09:05
回复
5#
wuzen007
地址与值的区别吧
作者:
idi0t
时间:
2013-11-28 09:30
localtime里好像使用了static 局部变量,指所以是不可重入的吧。还是按2楼说的用localtime_r吧,localtime多线程下都不安全。类似这样的函数还有不少,是要注意下。
作者:
syre
时间:
2013-11-28 09:56
基本上,输出是通过返回个指针,而内存又不是你分配的就需要注意了。多半都不是线程安全的。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2