Frage

In einigen Code, den ich zu halten habe, habe ich einen Formatbezeichner %*s gesehen. Kann mir jemand sagen, was das ist und warum es verwendet wird?

Ein Beispiel für seine Verwendung ist wie:

fprintf(outFile, "\n%*s", indent, "");
War es hilfreich?

Lösung

Er wird verwendet, um anzugeben, in einer dynamischen Art und Weise, was die Breite des Feldes :

  
      
  • Die Breite wird im Formatstring nicht angegeben, sondern als zusätzliches   ganzzahligen Wert vor dem Argument   Argument, das formatiert werden muss.
  •   

so „indent“ gibt an, wie viel Speicherplatz für die Zeichenfolge zuweisen, die sie in der Parameterliste folgt.

So

printf("%*s", 5, "");

ist die gleiche wie

printf("%5s", "");

Es ist eine schöne Möglichkeit, einige Räume in der Datei zu setzen, um eine Schleife zu vermeiden.

Andere Tipps

Verwenden Sie „% * s“ nicht auf einem Puffer, beendet nicht NULL ist (gepackte) denken, dass es nur gedruckt wird „Länge“ ein.

http://www.cplusplus.com/reference/clibrary/cstdio/ printf /

  

Die Breite wird in der Formatzeichenkette nicht spezifiziert, sondern als zusätzliches Argument ganzzahligen Wert vor dem Argument, das formatiert werden muss.

z. printf("%*s", 4, myValue); ist equivelant printf("%4s", myValue);

Die Formatbezeich% 4S gibt einen String in einer Feldbreite von 4, das heißt printf zeigt den Wert mit mindestens 4 Zeichenpositionen.

Wenn der Wert ausgegeben werden soll less als 4 Zeichenpositionen breit, ist der Wert right justified im Bereich standardmäßig aktiviert.

Wenn der Wert greater als 4 Zeichenpositionen breit ist, die Feldbreite expands die entsprechende Anzahl von Zeichen aufzunehmen.

links, um den Wert rechtfertigen, eine negative ganze Zahl verwenden, um die Feldbreite angeben.

Referenzen: Java ™ So programmieren (Early Objects), Zehnte Ausgabe

* Verursacht fprintf aufzufüllen die Ausgabe bis es n Zeichen breit ist, wobei n ein ganzzahliger Wert in dem Funktionsargument gespeichert ist nur, dass durch den modifizierten Typen dargestellt vorhergehenden.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top