Wie fülle ich ein printf auf, um negative Vorzeichen und Zahlen mit variabler Länge zu berücksichtigen?

Lesezeit: 1 Minute

Benutzeravatar von Jon Cage
Jon Käfig

Ich versuche, einige Zahlen in einer Protokolldatei auszugeben, und ich möchte eine Menge Floats über die auffüllen printf Funktion zu produzieren:

 058.0
 020.0
 038.0
-050.0
 800.0
 150.0
 100.0

Aktuell mache ich das:

printf("% 03.1f\n", myVar);

…wobei myVar ein Float ist. Die Ausgabe dieser Anweisung sieht folgendermaßen aus:

58.0
20.0
38.0
-50.0
800.0
150.0
100.0

Aus was ich gelesen habe Ich würde erwarten, dass mein Code die Ausgabe erzeugt, die ich oben in diesem Beitrag erwähnt habe, aber eindeutig stimmt etwas nicht. Kann man immer nur eine Flagge verwenden? ..oder geht hier noch was?

  • In diesem Fall sollten Sie wahrscheinlich die richtigen C++-Streams für die E/A verwenden Ja wirklich eine C++-Frage.

    – paxdiablo

    16. März 2011 um 12:38 Uhr

Der Breitenbezeichner ist die vollständige Breite:

printf("%05.1f\n", myVar);  // Total width 5, pad with 0, one digit after .

So erhalten Sie Ihr erwartetes Format:

printf("% 06.1f\n", myVar);

  • Ja, das ist es. Ich hatte nicht bemerkt, dass die Auffüllung den Dezimalpunkt usw. enthielt. … obwohl es 06 sein muss, um den Leerzeichen- oder Vorzeichenwert einzuschließen.

    – Jon Cage

    16. März 2011 um 12:24 Uhr


folgt Erik, aber ich finde

printf("% 6.1f\n", myVar);

funktioniert auch.

1386670cookie-checkWie fülle ich ein printf auf, um negative Vorzeichen und Zahlen mit variabler Länge zu berücksichtigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy