11

What does %.6d mean in:

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

Is it a typo?

It seems %.6d is the same as %6d.

2
  • 8
    Was it really easier/faster to ask this question on SO than to write a quick test program (like the ones in the answers) and run it to see the difference? Commented May 6, 2010 at 21:09
  • You don't even need a program. Just run printf '%.6d\n' 1234 in bash. Commented May 7, 2010 at 13:21

2 Answers 2

30
%.6d

In the .precision format for integer specifiers (d, i, o, u, x, X), precision specifies the minimum number of digits to be written. If the value to be written is shorter than this number, the result is padded with leading zeros. The value is not truncated even if the result is longer.

%6d

The width (here 6) specifies the minimum number of characters to be printed. If the value to be printed is shorter than this number, the result is padded with blank spaces. The value is not truncated even if the result is larger.

Example:

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

outputs:

000001
     1
Sign up to request clarification or add additional context in comments.

3 Comments

So it's only different in padding with zeros and blanks?
So %.6d is the same as %06d? Blech, let's hear it for consistency. >_<
So is %.6d same as %06d ?
8

The former will pad with zeros, the latter with spaces.

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

Produces the following output,

000123
   123

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.