c - printf() 精度
问题描述
char buf[10];
int counter, x = 0;
snprintf (buf, sizeof buf , "%.100d%n", x, &counter);
printf("Counter: %d\n", counter)
我正在学习 printf 的精度。使用 %.100d%n,这里的精度给出了 100 位来渲染 x。
我不明白的是为什么计数器会增加到 100,尽管实际上只有 10 个字符被写入缓冲区?
解决方案
写入的十个字节buf
是 9 个空格和 1 '\0'
(零终止符),counter
分配了100
99 个空格和 1 '0'
(数字零)的值。
buf <== " "
%.100d <== " ..... 0"
请注意,这buf
是不完整的:它没有'0'
.
推荐阅读
- snapshot - 查询 SnapShot 表并返回单列更改值的日期
- java - 初始化类字段的最佳方法
- c++ - 是否值得将函数调用的结果存储在临时变量中以便在这种情况下进一步重用?
- reactjs - Nest.js Google 登录(passport.js)与 SPA 前端(反应)
- c++ - 针对“种类”层次结构使用可变参数验证 std::function
- javascript - 检查容器中是否有任何矩形(总数:N)相互重叠的最佳方法是什么?
- java - 使用 Reactor Kafka 实现多个接收器以从主题中的多个分区读取
- npm - vega embed中的纱线启动失败
- python - OSError: [Errno 24] 登录 Python 时打开的文件过多
- flutter - 如何将计时器添加到 changenotifier 类