formatierung bei tabulatoren? (printf)
-
hey, mir ist das schon öfters aufgefallen, aber jetzt muss ich echt mal wissen was da los ist eigentlich:
char name1[20]; char name2[20]; char name3[20]; char name4[20]; // per scanf-befehle speicher ich in name1 bis name4 etwas rein. printf("%s %d %d",name1,g,h); printf("%s %d %d",name2,g,h); printf("%s %d %d",name3,g,h); printf("%s %d %d",name4,g,h);
ausgabe auf der konsole:
spieler 200 80% spieler2 200 80% spielerdrei 200 80% BLUB 200 80%
bei den printf-anweisungen habe ich nach dem "%s" drei tabulatoren gemacht.
das müsste doch genug platz sein, auch für die namen, die länger als 7 zeichen sind... aber trotzdem verschiebt sich die ausgabe da... woran liegt das?
es sind wie gesagt in JEDER printf-zeile exakt drei tabulatoren zwischen dem "%s" und dem "%d".
-
Na dann überleg' einmal, warum ich weiß, daß dein (Ausgabe-) Terminal auf 8 Spaces pro Tab eingestellt ist...
-
okay, und wie kann ich dann überhaupt eine tabelle ordentlich ausgeben, wenn irgendwas da drin länger als 7 zeichen ist?
also ohne jetzt die einstellungen im terminal zu ändern, sondern halt im code.
-
Das geht nicht so einfach, wie du das gedacht hast. Du wirst nicht darum herumkommen, ganzzahlig zu dividieren, um herauszufinden, wie viele Tabs du ausgeben musst.
Allerdings kannst du auch auf die Tabs verzichten, weil printf für dich Tabellen formatieren kann (mit Leerzeichen). Versuch einmal etwas in der Art:
printf("_%-24s_", "foo")
Bevor ich's vergesse: warum schreibst du eigentlich nicht \t für das Tabulator-Zeichen?
-
okay danke!
(ich schreibe nicht \t, weil die tabelle schon im quelltext so aussehen soll, wie sie dann auf dem bildschirm zu sehen ist. das macht es leichter damit zu arbeiten)
-
Aber dann müssen auch immer deine Editor-Tabulatoreinstellungen mit denen der Ausgabe-Konsole übereinstimmen...
(und dann könntest du gleich Leerzeichen verwenden, denn das wäre dann eindeutig).
Also halte dich an das, was cheopz geschrieben hat.