2010-05-06 98 views
9

không %.6d có ý nghĩa gì trong:không "% .6d" có ý nghĩa gì trong printf

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

Có một lỗi đánh máy?

Có vẻ như %.6d giống với %6d.

+7

Đó có phải là thực sự dễ dàng hơn/nhanh hơn để hỏi câu hỏi này trên SO hơn để viết một chương trình thử nghiệm nhanh (giống như những người trong các câu trả lời) và chạy nó để xem Sự khác biệt? – tomlogic

+0

Bạn thậm chí không cần một chương trình. Chỉ cần chạy 'printf '% .6d \ n' 1234' trong bash. –

Trả lời

24
%.6d 

Trong định dạng .precision cho specifiers số nguyên (d, i, o, u, x, X), độ chính xác định số lượng tối thiểu của các chữ số được viết. Nếu giá trị được viết ngắn hơn số này, kết quả là đệm với số 0 đứng đầu. Giá trị không bị cắt bớt ngay cả khi kết quả dài hơn.

%6d 

Chiều rộng (đây 6) quy định cụ thể số lượng tối thiểu của các nhân vật được in. Nếu giá trị được in ngắn hơn số này, kết quả là đệm với khoảng trắng. Giá trị không bị cắt bớt ngay cả khi kết quả lớn hơn.

Ví dụ:

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

kết quả đầu ra:

000001 
    1 
+0

Vì vậy, nó chỉ khác nhau trong đệm với ** số không ** và ** khoảng trống **? – user198729

+1

Vì vậy, '% .6d' là giống như'% 06d'? Blech, chúng ta hãy nghe nó cho sự nhất quán. > _ < –

+0

Vì vậy, là '% .6d' giống như'% 06d'? –

8

Cựu ý pad với số không, sau này với không gian.

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

Tạo đầu ra sau đây,

00
    123