2010-05-06 9 views
9

bedeuten Was ist %.6d bedeuten:Was bedeutet "% .6d" in printf

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

Ist es ein Tippfehler?

Es scheint %.6d ist das gleiche wie %6d.

+7

War es wirklich einfacher/schneller auf SO diese Frage zu stellen als ein schnelles Test-Programm zu schreiben (wie die, die in den Antworten) und führen Sie es zu sehen, der Unterschied? – tomlogic

+0

Sie brauchen nicht einmal ein Programm. Führen Sie einfach 'printf'% .6d \ n '1234' in bash aus. –

Antwort

24
%.6d 

Im .precision Format für Ganzzahl-Spezifizierer (d, i, o, u, x, X), Präzision gibt die minimale Anzahl von Ziffern geschrieben werden. Wenn der zu schreibende Wert kürzer als diese Zahl ist, wird das Ergebnis mit führenden Nullen aufgefüllt. Der Wert wird nicht abgeschnitten, auch wenn das Ergebnis länger ist.

%6d 

Die Breite (hier 6) gibt die Mindestanzahl von Zeichen, die gedruckt werden sollen. Wenn der zu druckende Wert kürzer als diese Zahl ist, wird das Ergebnis mit Leerzeichen aufgefüllt. Der Wert wird nicht abgeschnitten, auch wenn das Ergebnis größer ist.

Beispiel:

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

Ausgänge:

000001 
    1 
+0

Also unterscheidet es sich nur in der Auffüllung mit ** Nullen ** und ** Leerzeichen **? – user198729

+1

Also '% .6d' ist das gleiche wie'% 06d'? Blech, lass es uns aus Konsistenz hören. > _ < –

+0

Also ist '% .6d' dasselbe wie'% 06d'? –

8

Erstere wird Pad mit Nullen, wobei die letztere mit Leerzeichen.

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

erzeugt die folgende Ausgabe,

00
    123