c - sprintf 和 uint64_t 未使用 PRIu64 正确格式化

标签 c format printf

#include <inttypes.h>
uint64_t delta = (some huge number);
char outstring[80];
sprintf(outstring, "Delta of %"PRIu64 " seconds detected. Adjusting RTC\r\n", delta);

这导致 outstring = “检测到 lu 秒的增量。调整 RTC”

很明显,我正在寻找 outstring 中的数字,而不是“lu”。我现在不理解哪一段语法?

我想我正在使用 gcc c11

最佳答案

您的 C 库 printf 似乎不支持 long long 类型。当与 gcc 端口结合使用时,这是 Windows 上旧版 MSVC 库的一个常见缺点。您应该升级到最新版本的 Microsoft Visual Studio 并使用它,或者切换到具有更好的 C 支持的平台,例如 OS/X 或 Linux。

关于c - sprintf 和 uint64_t 未使用 PRIu64 正确格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689306/

相关文章:

python - 打印带有宽度说明符的 python 列表

c - 解释一下程序中fprintf()的奇怪行为,在文件中打印一些不寻常的字符

C 客户端/服务器与 fprintf 通信?

c - 海湾合作委员会错误 : "unable to find a register to spill" (problems with OS's dev's inline assembly)

c - 编译器如何翻译 while(foo)?

c++ - netlink 接口(interface) stat goto 交叉初始化错误

format - 猜测数据类型

c - 为什么 getaddrinfo 有多个结果?

java - 实时用户输入的 jFormatedTextField 货币格式

c - 为什么 printf 说明符格式 %n 不起作用?