使用线程安全local_time_r

时间:2015-09-02 15:14:58

标签: c

我有以下c代码,我想使用local_time_r这是线程安全的,我得到分段错误,我不知道为什么。

time_t rawtime = 1441194527;
   struct tm *info;
   char buffer[80];

   time( &rawtime );

   info = localtime_r( &rawtime );

   strftime(buffer,80,"%Y-%m-%d %X", info);
   printf("Formatted date & time : |%s|\n", buffer );

1 个答案:

答案 0 :(得分:0)

localtime_r的签名如下:

struct tm *localtime_r(const time_t *timep, struct tm *result);

您需要将struct tm的地址传递给它。您不想传递info,因为它没有指向任何地方,因此请将其更改为非指针并传递其地址。

time_t rawtime = 1441194527;
struct tm info;   // not a pointer
char buffer[80];

time( &rawtime );

localtime_r( &rawtime, &info );   // added parameter

strftime(buffer,80,"%Y-%m-%d %X", &info);   // changed parameter
printf("Formatted date & time : |%s|\n", buffer );