printf format float with padding

c, floating-point, floating-point-conversion

Solution

The following should line everything up correctly:

printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);

When I run this, I get:

ABC 1234.5 DEF
ABC   14.5 DEF

The issue is that, in `%5.1f`, the `5` is the number of characters allocated for the entire number, and `1234.5` takes more than five characters. This results in misalignment with `14.5`, which does fit in five characters.

Problem

The following test code produces an undesired output, even though I used a width parameter: ``` int main(int , char* []) { float test = 1234.5f; float test2 = 14.5f; printf("ABC %5.1f DEF\n", test); printf("ABC %5.1f DEF\n", test2); return 0; } ``` Output ``` ABC 1234.5 DEF ABC 14.5 DEF ``` How to achieve an output like this, which format string to use? ``` ABC 1234.5 DEF ABC 14.5 DEF ```

Original source