c - snprintf 不使用 strftime 打印转换后的 timeval?

标签 c printf strftime timeval

我从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/

相关文章:

c - 是否可以在 printf 中设置字符数

iphone - 使用 strftime 将 NSDate 转换为字符串

c++ - 大 N 的字符串容器

c - SQLBindParameter 和 SQLExecute 返回 SQL_NEED_DATA

c - 如何在 C 中划分数字并比较它们

f# - 如何使用类似 printf 的功能获得文化感知输出?

c - 逐个字符打印字符串,不带空格

将 char 整数表示形式转换为二进制

python - 如何使用 python strptime 和 strftime 将 2017-02-09T09 :43:04. 216+1000 等日期时间格式转换为 09-Feb-2017?

python - 如何在不同的语言环境中对日期对象进行 strftime?