I want to pad a column so it's 8 characters wide, and make integers left-aligned with at most one leading zero like this:
[00 ]
[01 ]
[07 ]
[11 ]
[14 ]
I know how to add the leading zeroes (printf("d\n", integer)
) or the padding (printf("%-8d\n", integer)
), but I don't know how to combine the two. Is there an easy way to achieve this?
CodePudding user response:
Specify the minimum field width (8
) and the precision (.2
) and left-justification (-
) — see fprintf()
— like this:
#include <stdio.h>
int main(void)
{
int array[] = { 0, 1, 7, 11, 14, 314159 };
enum { NUM_ARRAY = sizeof(array) / sizeof(array[0]) };
for (int i = 0; i < NUM_ARRAY; i )
printf("[%-8.2d]\n", array[i]);
return 0;
}
Output (on macOS 12.3):
[00 ]
[01 ]
[07 ]
[11 ]
[14 ]
[314159 ]
This seems to be what you want.
CodePudding user response:
When adding the leading zeroes and assuming that the numbers do not exceed the resulting width (in this case 2, i.e. that the integers are between -9 and 99), the width is constant so the padding can be inserted as a fixed number of spaces:
printf("[d ]\n", integer);