2010-05-06 177 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 
相關問題