Что означает «% .6d» в printf - PullRequest
9 голосов
/ 06 мая 2010

Что означает %.6d в:

printf("%s.%.6d len:%d ", timestr, header->ts.tv_usec, header->len);

Это опечатка?

Кажется, %.6d совпадает с %6d.

Ответы [ 2 ]

27 голосов
/ 06 мая 2010
%.6d

В формате .precision для целочисленных спецификаторов (d, i, o, u, x, X) точность определяет минимальное количество записываемых цифр. Если записываемое значение короче этого числа, результатом будет с добавлением ведущих нулей . Значение не усекается, даже если результат длиннее.

%6d

Ширина (здесь 6) определяет минимальное количество символов для печати. Если значение для печати короче этого числа, результатом будет с пробелами . Значение не усекается, даже если результат больше.

Пример:

printf("%.6d\n%6d",1,1);

выходы:

000001
     1
8 голосов
/ 06 мая 2010

Первый будет дополняться нулями, второй - пробелами.

#include <stdio.h>
int main(void) {
    printf ("%.6d\n", 123);
    printf ("%6d\n", 123);
    return 0;
}

Создает следующий вывод,

000123
   123
...