首页 > 解决方案 > sprintf 和 uint64_t 未使用 PRIu64 正确格式化

问题描述

#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

标签: cformatprintf

解决方案


您的 C 库printf似乎不支持long long类型。这是 Windows 上较旧的 MSVC 库与gcc. 您应该升级到最新版本的 Microsoft Visual Studio 并使用该版本,或者切换到具有更好 C 支持的平台,例如 OS/X 或 Linux。


推荐阅读