2010-05-06 182 views
9

的意思是什么%.6d意味着:什么是 “%.6d” printf中

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

它是一个错字?

看起来%.6d%6d相同。

+7

是不是真的更容易/快问这个问题上的SO比写一个简单的测试程序(如在回答各种问题),然后运行它,看看区别? – tomlogic 2010-05-06 21:09:21

+0

你甚至不需要一个程序。只需在bash中运行'printf'%.6d \ n'1234'。 – 2010-05-07 13:21:10

回答

24
%.6d 

.precision格式整数说明符(d,I,O,U,X,X),精度指定的最小位数被写入。如果要写入的值小于此数字,则结果为用前导零填充。即使结果更长,值也不会被截断。

%6d 

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

实施例:

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

输出:

000001 
    1 
+0

所以它只是填充**零和**空白**的不同而已? – user198729 2010-05-06 06:12:25

+1

那么'%.6d'和'%06d'是一样的吗? Blech,让我们听听它的一致性。 > _ < – 2010-05-07 13:22:03

+0

与'%06d'相同的是'%.6d'吗? – 2016-08-17 16:36:20

8

前者将垫用零,后者用的空间。

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

产生下面的输出,

00
    123 
相关问题