Точность printf () - PullRequest
       39

Точность printf ()

1 голос
/ 05 марта 2019
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 символов?

1 Ответ

1 голос
/ 05 марта 2019

Десять байтов, записанных в buf, представляют собой 9 пробелов и 1 '\0' (нулевой терминатор), counter присваивается значение 100 для 99 пробелов и 1 '0' (цифра ноль).

   buf <== "         "
%.100d <== "          .....   0"

Обратите внимание, что buf является неполным: у него нет '0'.

...