# Formatierte Ausgabe mit printf



## xbugsx (15. November 2007)

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


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


```
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:


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

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


----------



## deepthroat (15. November 2007)

Hi.

Schau dir mal die Dokumentation für den printf (http://www.hmug.org/man/3/printf.php) an. Man kann dort eine minimale Feldgröße angeben:
	
	
	



```
printf("%20s|%20s", x, y);
```
Gruß


----------



## xbugsx (15. November 2007)

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 

```
printf("%s\t|\t%-35s\t|\t%s\n", pointer->ean, pointer->title, pointer->genre);
```
und 35, weil

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


----------

