printf Parameter (width) als Variable?
-
Hallo,
durch sowas wie
printf("% 5i", myInt);
erreicht man, dass myInt, falls es weniger als fünf Stellen hat, mit Leerzeichen vorn "aufgefüllt" wird, so dass man eine definierte Ausgabe von (mindestens) 5 Zeichen hat.
Nun zu meiner Fragen, wie kann man statt dieser 5 einen Parameter einsetzen?
Gibt es dazu ein spezielles Compilerflag?
Vielen Dank für einen Vorschlag,
Mat.
-
meinst du vielleicht sowas:
[cpp]
printf("%i %c",myInt, myChar);
-
erm, nein. Ich glaube nicht.
Dein code gibt doch einen int und einen char aus.
Ich mag aber nur einen int ausgeben, der eine Mindestlänge von z.B. 5 hat.Man kann damit z.B. folgende Ausgabe erreichen:
___13
_1341
___31
____3usw.
(Statt das _ ein Leerzeichen, leider ging die Formatierung verloren)Nun weiss ich nicht vorher, ob es genau 5 Stellen sind. Deswegen mag ich das parametrisieren.
Mat.
-
Der erste Parameter von printf ist ja auch nur ein char-string.
Du kannst also diesen String vorher manipulieren:int myInt = 3; char myWidth = '2'; char myFormat[5] = {'%',' ','5','i',0}; myFormat[2] = myWidth; printf(myFormat, myInt);
myWidth kann hier natürlich nur Einstellig sein. (Ist ja ein char.)
Möchtest du kompliziertere Veränderungen in myFormat vornehmen, solltest du dir mal sprintf ansehen.
-
printf("% *lu", 5, 1234);
5 ist die Anzahl und 1234 wären die Daten.
Ergebnis bei:
printf("% *lu\n", 5, 1234);
printf("% *lu\n", 10, 1234);wäre:
1234 1234