char buf[10];
int counter, x = 0;
snprintf (buf, sizeof buf , "%.100d%n", x, &counter);
printf("Counter: %d\n", counter)
我正在学习有关printf的精度。使用%.100d%n,此处的精度为渲染x提供了100位数字。
我不明白的是为什么计数器实际上增加到100,尽管实际上只有10个字符写入了缓冲区?
答案 0 :(得分:1)
写入buf
的十个字节为9个空格和1个'\0'
(零终止符),为counter
分配了值为100
的99个空格和1个{{1 }}(数字零)。
'0'
请注意, buf <== " "
%.100d <== " ..... 0"
是不完整的:它没有buf
。