c - Was bedeutet der Formatbezeichner% * s?

Translate

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

Ein Beispiel für seine Verwendung ist wie folgt:

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Es wird verwendet, um auf dynamische Weise die Breite des Feldes anzugeben:

  • Die Breite wird nicht in der Formatzeichenfolge angegeben, sondern als zusätzliches ganzzahliges Wertargument vor dem zu formatierenden Argument.

"Einzug" gibt also an, wie viel Speicherplatz für die darauf folgende Zeichenfolge in der Parameterliste zugewiesen werden soll.

Damit,

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

ist das gleiche wie

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

Es ist eine gute Möglichkeit, Leerzeichen in Ihre Datei einzufügen und eine Schleife zu vermeiden.

Quelle
Translate

Verwenden Sie "% * s" nicht für einen Puffer, der nicht mit NULL abgeschlossen (gepackt) ist, da er nur das Feld "Länge" druckt.

Quelle
Translate

Der Formatbezeichner% 4s gibt einen String in einer Feldbreite von 4 aus, dh printf zeigt den Wert mit mindestens 4 Zeichenpositionen an.

Wenn der auszugebende Wert istlessals 4 Zeichenpositionen breit ist der Wertright justifiedstandardmäßig im Feld.

Wenn der Wert istgreaterals 4 Zeichenpositionen breit, die Feldbreiteexpandsum die entsprechende Anzahl von Zeichen aufzunehmen.

Um den Wert linksbündig auszurichten, verwenden Sie eine negative Ganzzahl, um die Feldbreite anzugeben.

Verweise:Java ™ Programmieranleitung (frühe Objekte), 10. Ausgabe

Quelle
Translate

* Bewirkt, dass fprintf die Ausgabe auffüllt, bis sie n Zeichen breit ist, wobei n ein ganzzahliger Wert ist, der im a-Funktionsargument gespeichert ist, das direkt vor dem durch den geänderten Typ dargestellten Wert liegt.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Quelle
Translate

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

Die Breite wird nicht in der Formatzeichenfolge angegeben, sondern als zusätzliches ganzzahliges Wertargument vor dem zu formatierenden Argument.

z.B:printf("%*s", 4, myValue);ist gleichbedeutend mitprintf("%4s", myValue);.

Quelle
Leave a Reply
You must be logged in to post a answer.
Über den Autor