2010-05-06 81 views
9

¿Qué significa %.6d en:¿Qué significa "% .6d" significa en printf

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

Es un error tipográfico?

Parece %.6d es lo mismo que %6d.

+7

¿Era realmente más fácil/más rápido para hacer esta pregunta en el SO que escribir un programa de prueba rápida (como los de las respuestas) y ejecutarlo para ver ¿la diferencia? – tomlogic

+0

Ni siquiera necesita un programa. Simplemente ejecuta 'printf '% .6d \ n' 1234' en bash. –

Respuesta

24
%.6d 

En el formato .precision para especificadores enteros (d, i, o, u, x, x), precisión especifica el número mínimo de dígitos a ser escrito. Si el valor a escribir es más corto que este número, el resultado es rellenado con ceros a la izquierda. El valor no se trunca aunque el resultado sea más largo.

%6d 

La anchura (aquí 6) especifica el número mínimo de caracteres a imprimir. Si el valor que se imprimirá es más corto que este número, el resultado es rellenado con espacios en blanco. El valor no se trunca aunque el resultado sea más grande.

Ejemplo:

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

salidas:

000001 
    1 
+0

Entonces, ¿solo es diferente en relleno con ** ceros ** y ** espacios en blanco **? – user198729

+1

Entonces '% .6d' es lo mismo que'% 06d'? Blech, escuchemos por consistencia. > _ < –

+0

¿Entonces es '% .6d' lo mismo que'% 06d'? –

8

El ex almohadilla voluntad con ceros, este último con espacios.

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

produce la siguiente salida,

00
    123