printf()精度

时间:2019-03-05 14:44:24

标签: c printf format-string

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个字符写入了缓冲区?

1 个答案:

答案 0 :(得分:1)

写入buf的十个字节为9个空格和1个'\0'(零终止符),为counter分配了值为100的99个空格和1个{{1 }}(数字零)。

'0'

请注意, buf <== " " %.100d <== " ..... 0" 是不完整的:它没有buf