我从SO那里得到了这个答案:
https://stackoverflow.com/a/2409054/997112
这样我就可以以友好的格式打印 timeval 结构。我必须将 "%s.%06d"
更改为 "%s.%06ld"
,因为我收到编译器警告:
void printTimeval(struct timeval& tv){
time_t nowtime;
struct tm *nowtm;
char tmbuf[64], buf[64];
nowtime = tv.tv_sec;
nowtm = localtime(&nowtime);
strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
}
但是,当我经过一段有效时间时,什么也没有打印。
在调用我的函数之前,我检查了传入的 timeval 中的秒数,它返回 1404120855,所以我确信我的 timeval 是正确的,问题出在函数上?
最佳答案
snprintf() 所做的只是格式化字符串。您实际上从未在 buf
中打印出结果字符串。添加如下内容:
printf("%s\n", buf);
或
puts(buf);
此外,您应该将 tv_usec
字段强制转换为 long
,因为您无法知道要定义的 typedef 类型长
。
关于c - snprintf 不使用 strftime 打印转换后的 timeval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24487800/