我有以下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 );
答案 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 );