0

我从 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 是正确的,问题出在函数上?

4

1 回答 1

1

所做的只是格式化一个snprintf()字符串。你从来没有真正打印出结果字符串在buf. 添加类似:

printf("%s\n", buf);

或者

puts(buf);

此外,您应该long对该tv_usec字段进行强制转换,因为您不知道typedef 的类型为long

于 2014-06-30T10:16:07.857 回答