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个字符被写入缓冲区?
发布于 2019-03-05 22:54:39
写入buf的10个字节是9个空格和1个'\0' (零终止符),对于99个空格和1个'0' (数字零),counter被赋值为100。
buf <== " "
%.100d <== " ..... 0"请注意,没有buf '0'**.**的是不完整的
https://stackoverflow.com/questions/55005394
复制相似问题