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
    ____3

    usw.
    (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
    

Anmelden zum Antworten