printf formatierte Ausgabe - variable stellenanzahl

G

Ghamor

Hallo,

ich habe ein Projekt zu machen, und als Teil dieses Projektes muss ich eine Reihe Zahlen in die Konsole posten, die rechtsbündig untereinander stehen sollen.
ich weiß dass ich grundsätzlich mit
Code:
printf ("%5d", int);
zahlen so anornden kann, wie es gefordert ist.
Jetzt habe ich aber das Problem, dass die Anzahl der Stellen Variabel ist, je nachdem wie viele stellen die größte Zahl hat. also müsste ich die "5" aus dem oberen Beispiel in eine Variable packen und einfügen, aber wie mache ich das?

Ich hoffe man versteht was ich meine, hier zwei Optionen wie es aussehen sollte:

BSP 1: Höchste zahl "345"
Ausgabe:
Code:
"  1"
"  5"
" 23"
" 75"
"100"
"345"
BSP2: Höchste Zahl: "73423"
Code:
"    5"
"   45"
"  456"
" 6835"
"73423"


Es wäre echt toll wenn mir schnell jemand helfen könnte, da ich wirklich feststecke >.>
Lg
 
Hi.

Du müßtets die Zahl mit den meisten Stellen bestimmen und dann dementsprechend das Format zusammenfügen, z.B. mit sprintf.

Gruß
 
das ist mir schon klar, aber WIE sieht diese formatierung aus?
ich weiß nicht wie ich eine variable zwischen das "%" und das "d" bekomme, weil die variable selbst ja auch eine "%d" ist.
Ich finde dazu absolut gar nichts, es kommt mir echt so vor als wäre ich der erste der das Problem hat...
 
Der Vorschlag war mit sprintf zuerstmal das Format zusammenzubauen, und danach die Ausgabe mit printf zu machen:
C:
char frmt[30];
sprintf(frmt, "%%%dd", anzahl_von_stellen);

for (...) {
  printf(frmt, ...);
}
Du könntest auch als Breitenangabe ein * verwenden, dann übergibst du einfach als nächstes Argument die gewünschte Breite:
C:
printf("%*d", zahl, anzahl_von_stellen);
Siehe z.B. http://linux.die.net/man/3/printf

Gruß
 
Zurück