printf中"%.6d"是什么意思

use*_*729 9 c formatting printf

这是什么%.6d意思的:

printf("%s.%.6d len:%d ", timestr, header->ts.tv_usec, header->len);
Run Code Online (Sandbox Code Playgroud)

这是一个错字吗?

它似乎%.6d是一样的%6d.

cod*_*ict 27

%.6d
Run Code Online (Sandbox Code Playgroud)

在整数说明符(d,i,o,u,x,X)的.precision格式中,precision指定要写入的最小位数.如果要写入的值小于此数字,则结果将使用前导零填充.即使结果较长,也不会截断该值.

%6d
Run Code Online (Sandbox Code Playgroud)

宽度(此处为6)指定要打印的最小字符数.如果要打印的值小于此数字,则结果将填充空格.即使结果较大,也不会截断该值.

例:

printf("%.6d\n%6d",1,1);
Run Code Online (Sandbox Code Playgroud)

输出:

000001
     1
Run Code Online (Sandbox Code Playgroud)


Ste*_*e-o 8

前者用零填充,后者用空格填充.

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

产生以下输出,

000123
   123
Run Code Online (Sandbox Code Playgroud)