Freigeben über


Syntax der Formatangabe: printf- und wprintf-Funktionen

Beschreibt die Syntax für Argumente von Formatzeichenfolgen, die auf printf, wprintf und verwandte Funktionen verweisen. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter Sicherheitsfunktionen in der CRT. Informationen zu den einzelnen Funktionen finden Sie in der Dokumentation zu den jeweiligen Funktionen. Eine Auflistung dieser Funktionen finden Sie unter Stream-E/A.

Eine Formatspezifikation, die aus optionalen Feldern und Pflichtfeldern besteht, hat die folgende Form:

%[flags] [width] [.precision] [{h | l | ll | w | I | I32 | I64}] type

Jedes Feld der Formatspezifikation ist entweder ein Zeichen oder eine Zahl, das bzw. die eine bestimmte Formatoption oder Konvertierungsspezifizierer darstellt. Das erforderliche type-Zeichen gibt die Art der Konvertierung an, die an einem Argument vorgenommen wird. Die optionalen Felder flags, width und die precision steuern zusätzliche Formataspekte. Eine einfache Formatspezifikation enthält nur das Prozentzeichen und ein type-Zeichen – z. B. %s für eine Zeichenfolgenkonvertierung. Wenn auf ein Prozentzeichen ein Zeichen ohne Bedeutung als Formatfeld folgt, wird das Zeichen unverändert in die Ausgabe kopiert. Um ein Prozentzeichen zu drucken, verwenden Sie %%.

Die Felder der Formatspezifikation steuern die folgenden Aspekte der Argumentkonvertierung und Formatierung:

  • type
    Erforderlicher Konvertierungsspezifizierer, der bestimmt, ob das dazugehörige argument als Zeichen, Zeichenfolge, ganze Zahl oder Gleitkommazahl interpretiert wird. Weitere Informationen finden Sie unter printf-Typenfeldzeichen.

  • flags
    Optionales Zeichen (oder mehrere Zeichen), das die Ausgaberechtfertigung und die Ausgabe von Zeichen, Leerzeichen, führenden Nullen, Dezimaltrennzeichen und von oktalen und hexadezimalen Präfixen steuert. Weitere Informationen finden Sie unter Flag-Direktiven. In einer Formatspezifikation können mehrere Flags in beliebiger Reihenfolge angezeigt werden.

  • width
    Optionaler Dezimalwert, der die Mindestanzahl von auszugebenden Zeichen angibt. Weitere Informationen finden Sie unter printf-Breitenangabe.

  • precision
    Optionaler Dezimalwert, der die maximale Anzahl von den für Zeichenfolgen zu druckenden Zeichen angibt, die Anzahl der signifikanten Stellen oder die Anzahl von Ziffern nach dem Dezimaltrennzeichen für Gleitkommawerte, oder die Mindestanzahl an Ziffern, die für ganzzahlige Werte gedruckt werden. Weitere Informationen finden Sie in Genauigkeitsangabe unter dem Abschnitt zum Einfluss von Präzisionswerten auf den Typ.

  • h | l | ll | w | I | I32 | I64
    Optionale Präfixe für type, die die Größe des entsprechenden Arguments angeben. Weitere Informationen finden in Größenangabe unter "Größenpräfixe".

SicherheitshinweisSicherheitshinweis

Stellen Sie sicher, dass die Formatspezifikationszeichenfolgen nicht benutzerdefiniert sind.Beispiel: Ein Programm, das den Benutzer zur Eingabe eines Namens auffordert und die Eingabe in einer Zeichenfolgevariablen namens name speichert.Führen Sie zum Drucken von name nicht diesen Schritt aus:

printf( name ); /* Danger! If name contains "%s", program will crash */

Sondern gehen Sie stattdessen so vor:

printf( "%s", name );

Siehe auch

Referenz

printf, _printf_l, wprintf, _wprintf_l

printf_s, _printf_s_l, wprintf_s, _wprintf_s_l

printf_p-Positionsparameter

Flag-Direktiven

printf-Breitenangabe

Genauigkeitsangabe

Größenangabe

printf-Typenfeldzeichen