Formatierte Ausgabe mit printf

xbugsx

Grünschnabel
Hallo

Ich habe die Suche schon benutzt, auch bei google geguckt, aber leider nichts gefunden.
Man kann mit printf Variabeln formatiert ausgeben und was es für Möglichkeiten gibt weiß ich auch. Ich möchte gerne bei

Code:
printf("%s\t|\t%s%5\t|\t%s\n", pointer->ean, pointer->title, pointer->genre);

die 5, als Variable nutzen und habe aus diesem Grund mal

Code:
len = sizeof(pointer->title);
hlen = (maxlen - len) + 5;
printf("%s\t|\t%s%%i\t|\t%s\n", pointer->ean, pointer->title, hlen pointer->genre);

wobei dann immer ein gleich großer Zwischenraum entstehen soll,

als Beispiel:

Code:
001 |   Halloween            |  Horror
002 |   Shrek                |  Animation
usw.

damit die Übersicht nicht verloren geht.

mit %5 geht die Ausgabe, aber der Zwischenraum ist immer unterschiedlich groß.
mit %%i kommt immer ein Fehler.( das habe ich mir auch selbst ausgedacht, da ich nichts gefunen habe, aber dachte
Code:
printf("%s%5", string) = printf("%s%%i", string, integer)

Meine Frage ist, ob es möglich ist einen Wert innerhalb von printf() je nach belieben so zu verändern, ohne dass er als Zahl ausgegeben wird, sondern als Maß, bei mir für die Größe des Zwischenraumes, genutzt werden kann. Ich bin für jede Hilfe dankbar.
 
Vielen Dank für die Antwort. Ich habe leider nichts gefunden womit man die Spaltengröße je nach größtem Wort anlegt. Ich muss dann wohl die Spaltengröße vorher schon festlegen.

Also in meinem Fall linksbündig
C:
printf("%s\t|\t%-35s\t|\t%s\n", pointer->ean, pointer->title, pointer->genre);
und 35, weil
C:
char title[35];
ist und somit der längste Titel gerade so noch reinpassen würde, es sei denn ich verlängere die Spalte ein wenig, damit es nicht so gequetscht aussieht.
 
Zurück