c - 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
解决方案
您的 C 库printf
似乎不支持long long
类型。这是 Windows 上较旧的 MSVC 库与gcc
. 您应该升级到最新版本的 Microsoft Visual Studio 并使用该版本,或者切换到具有更好 C 支持的平台,例如 OS/X 或 Linux。
推荐阅读
- amazon-web-services - 具有命名列的 aws cli 查询和输出表格式
- ibm-mobilefirst - MFP JavaScript HTTP 适配器调用外部 url
- python - Heroku 没有要申请的迁移
- reactjs - 减少 React 道具值的 switch case 上的重复代码提高代码的可重复性
- css - TabBar 固定容器阴影在颤动中垂直滚动时从 ListView 下降
- java - 另一个 Pojo 对象的 Java List<> 未初始化
- javascript - 标签页切换,下一步需要保留未点击的页面
- javascript - 如何根据每行的值范围对对象数组进行排序?
- reactjs - 如何在 React 组件中传递道具?
- excel - DropDownList 中带有受保护工作表的多个项目