Hallo Mathias,
Als Maximalbreite wird korrekterweise der Wert 23 ermittelt. Und dennoch fehlt bei „Oberflächeninhalt“ ein Leerzeichen, ungeachtet dessen, welchen Index in „c“ es hat. (Der Formatstring ist natürlich auch bei allen dreien identisch.)
Tjor, *printf hat das gleiche Problem, wie strlen() - wenn Du %23d machst, dann füllt er es auf 23 Zeichen auf - ein Zeichen ist für *printf() jedoch immer ein Oktett, weswegen printf() denkt, der String »Oberflächeninhalt« müsste mit einem Zeichen weniger gepaddet werden, als er es eigentlich müsste. "Länge der Raumdiagonale" hat dagegen in den Augen von *printf() 25 Zeichen (statt 23), weswegen printf() nichts mehr paddet, weil der String sowieso schon zu lang ist, deswegen tritt dort das Problem nicht auf.
Du musst Dir das Padding wohl selbst zusammenbasteln, damit das wie gewünscht funktioniert.
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup