Formatangaben-Felder: scanf und wscanf Funktionen

Die Informationen hier gelten für die gesamte scanf-Funktionsreihe, einschließlich der sicheren Versionen und beschreiben die Symbole, die verwendet werden, um den scanf-Funktionen mitzuteilen, wie Sie den Schwellenwert, wie der Schwellenwert für stdin in scanfWerte analysiert, die in Programmvariablen eingefügt werden.

Eine Formatangabe verfügt über das folgende Format:

%[*] [Breite] [{h | L | ll | I64 | LTyp}]

Das format-Argument gibt die Interpretation der Eingabe an und kann eine oder mehrere der folgenden Elemente enthalten:

  • Leerzeichen: Leerzeichen („"); Tabulator (\ t "“); oder Zeilenvorschub („\ n ").Ein Leerzeichen wird scanf zu lesen, aber nicht alle nachgestellten Leerraumzeichen Speicher in der Eingabe bis zur nächsten Nicht-weiß SPACE-Zeichen.Ein Leerzeichen im Format entspricht eine beliebige Anzahl) und 0 (einschließlich Kombinationen von Leerzeichen in der Eingabe ab.

  • Nicht-weiß-SPACE-Zeichen, außer dem Prozentzeichen (%).Ein Nicht-weiß SPACE-Zeichen bewirkt scanf zu lesen, aber nicht Speicher, ein übereinstimmendes Nicht-weiß SPACE-Zeichen.Wenn das nächste Zeichen im Eingabestream nicht übereinstimmt, wird beendet scanf .

  • Formatangaben durch das Prozentzeichen (%eingeführt.)Eine Formatangabe wird, scanf Zeichen in der Eingabe in Werte eines angegebenen Typs zu konvertieren.Der Wert wird an ein Argument in der Argumentliste zugewiesen.

Das Format wird von links nach rechts gelesen.Zeichen außerhalb der Formatelemente sind erwartet, dass die Reihenfolge der Zeichen im Eingabestream übereinstimmt. die entsprechenden Zeichen im Eingabestream werden überprüft, aber nicht gespeichert.Wenn ein Zeichen im Eingabestream mit des Formatelements und scanf Beendigung verursacht, wird das Zeichen im Eingabestream belassen, als wäre er nicht gelesen wurde.

Wenn die erste Formatelement erreicht wird, wird der Wert des ersten Eingabefelds in dieser Spezifikation konvertiert und dem Speicherort gespeichert, der durch erste argumentangegeben wird.Die zweite Formatelement wird das zweite Eingabefeld im zweiten argumentusw. vom Ende der Formatzeichenfolge zu konvertierende und gespeichert werden.

Ein Bearbeitungsfeld wird als alle Zeichen bis zum ersten Leerzeichen (Leerzeichen, Zeilenvorschub) oder Tabstopps oder bis zum ersten Zeichen definiert, die nicht gemäß des Formatelements konvertiert werden kann, oder wenn die Feldbreite (sofern angegeben) wurde erreicht.Sind zu viele Argumente für die angegebenen Spezifikationen vorhanden ist, werden die zusätzlichen Argumente ausgewertet, aber ignoriert.Die Ergebnisse sind unvorhersehbar, wenn nicht genügend Argumente für die Formatelemente bestehen.

Jedes Feld des Formatelements ist ein einzelnes Zeichen oder eine Zahl, die eine bestimmte Format die Option angeben.Das type nach dem letzten Zeichen, das optionale Feld Stil wird bestimmt, ob das Bearbeitungsfeld Zahl, Zeichenfolge oder als Zeichen interpretiert wird.

Die einfachste Formatelemente enthält nur das Prozentzeichen und ein type Zeichen (z. B. %s).Wenn ein Prozentzeichen (%) gefolgt von einem Zeichen, das keine Bedeutung als FORMAT Steuerelement Zeichen enthält, werden diese Zeichen und die folgenden Zeichen (bis zum nächsten Prozentzeichen) als gewöhnliche Sequenz von Zeichen. h. eine Folge von Zeichen behandelt, die die Eingabe übereinstimmen müssen.Beispielsweise angeben, dass ein Prozentzeichen, Eingabe sein soll, verwenden Sie %%.

Ein Sternchen (*), das Prozentzeichen nächsten unterdrückt Zuweisung des nächsten Eingabefelds, das während ein Feld des angegebenen Typs interpretiert wird.Das Feld wird überprüft, aber nicht gespeichert.

Die sicheren Versionen (die mit dem _s Suffix) der scanf-Funktionsreihe erfordern, dass ein Puffergrößen Parametern direkt nach jeder Parameter des Typs c, C, s, S oder [übergeben wird.Weitere Informationen zur sicheren Versionen der scanf-Funktionsreihe finden Sie unter scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

Siehe auch

Referenz

scanf Breitenangabe

scanf Typ-Feld-Zeichen

scanf, _scanf_l, wscanf, _wscanf_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l