Formatierte Ausgabe mit fester Spaltengröße
-
Ich stehe vor einem Problem für das es bestimmt eine einfache Lösung gibt.
Ich möchte eine Ausgabe in folgender Form realisieren:
Wert 1: <Wert1> Adresse von Wert 1: <AdresseWert1> Irgendetwas anderes von Wert 1: <foobar>
Wie bekomme ich auf einfache Weise diese feste Spaltenbreite geregelt? Ich könnte das mit Hilfe von Tabs oder "%20d" lösen. Beides setzt aber das berechnen des Programmierers voraus.
Beispiel:
printf("Wert 1:\t\t\t%d", <Wert1>); printf("Adresse von Wert 1:\t%p", <Wert1>);
Da es sich dabei aber um eine derart häufige Problemstellung handelt, gehe ich davon aus, dass es dafür bessere Lösungen gibt.
-
Hallo Bentja!
Meines Erachtens gibt es keine besseren Lösungen, als die von Dir aufgeführten.
Selbst wenn es eine Ausgabefunktion geben würde, welche die Ausgabe in Spalten automatisiert, müßte der Programmierende immer die einzelnen Spaltenbreiten vorgeben. Woher soll das Programm auch wissen, welche Ausgabe in der nächsten Zeile kommt.
Gruß, Lothar.
-
printf() kann doch Feldweiten, oder ist das eine Non-Standard-Erweitung des MSVC?
// funktioniert das? printf("%20s\n",str);
MfG SideWinder
-
Danke an euch zwei!
SideWinder schrieb:
printf() kann doch Feldweiten, oder ist das eine Non-Standard-Erweitung des MSVC?
// funktioniert das? printf("%20s\n",str);
Ich weiß nicht wie das unter dem MSVC funktioniert, aber unter dem GCC erzeugt das ein 20 Zeichen breites Feld, was von rechts mit str aufgefüllt wird.
Setze ich aber die Bezeichnung davor, sind danach die Spalten wieder nicht exakt gleichbreit. Aber anscheinend muss man das wohl doch per "Hand" berechnen.
-
@SideWinder: Ich hab grad was gefunden, meintest Du das?(Ich wusste bis vor 5min. noch nicht, dass ich mittels "-" den Text links ausrichten kann.
printf("%-s:%d", "Wert 1" , <Wert1>); printf("%-s:%d", "Adresse von Wert 1", <AdrWert1>);
Das funktioniert auf jeden Fal, ob es guter Stil ist weiß ich nicht.
-
bentja schrieb:
Das funktioniert auf jeden Fal, ob es guter Stil ist weiß ich nicht.
ijaaa das passt schon