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
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.