scanf Feldzeichen eingeben

Die folgenden Informationen gelten für die scanf -Funktionsreihe, einschließlich der sicheren Versionen wie scanf_s.

Das type -Zeichen ist das einzige Formatpflichtfeld und erscheint nach allen optionalen Feldern. Das type -Zeichen bestimmt, ob das zugeordnete Argument als Zeichen, Zeichenfolge oder Zahl interpretiert wird.

type Zeichen für scanf Funktionen

Zeichen Erwarteter Typ der Eingabe Typ des Arguments Größenargument in der sicheren Version?
c Zeichen Gibt bei Verwendung mit scanf -Funktionen ein Einzelbytezeichen und bei Verwendung mit wscanf -Funktionen ein Breitzeichen an. In der Regel übersprungene Leerzeichen werden gelesen, wenn c angegeben ist. Im Gegensatz zu anderen Typfeldern gibt der Feldbreitenbezeichner die genaue Anzahl von Zeichen und nicht das Maximum an. Verwenden Sie %1s zum Lesen des nächsten Einzelbytezeichens, das kein Leerzeichen ist, und %1ws zum Lesen des nächsten Breitzeichens, das kein Leerzeichen ist. Zeiger auf char bei Verwendung mit scanf -Funktionen, Zeiger auf wchar_t bei Verwendung mit wscanf -Funktionen. Erforderlich. Die Größe enthält keinen Leerraum für einen Null-Terminator.
C Umgekehrtes Größenzeichen Gibt bei Verwendung mit scanf -Funktionen Breitzeichen und bei Verwendung mit wscanf -Funktionen Einzelbytezeichen an. In der Regel übersprungene Leerzeichen werden gelesen, wenn C angegeben ist. Im Gegensatz zu anderen Typfeldern gibt der Feldbreitenbezeichner die genaue Anzahl von Zeichen und nicht das Maximum an. Verwenden Sie %1s zum Lesen des nächsten Einzelbytezeichens, das kein Leerzeichen ist, und %1ws zum Lesen des nächsten Breitzeichens, das kein Leerzeichen ist. Zeiger auf wchar_t bei Verwendung mit scanf -Funktionen, Zeiger auf char bei Verwendung mit wscanf -Funktionen. Erforderlich. Das Größenargument enthält keinen Leerraum für einen Null-Terminator.
d Ganze Dezimalzahl Zeiger auf int Nein.
i Eine ganze Zahl Hexadezimal, wenn die Eingabezeichenfolge mit "0x" oder "0X" beginnt, oktal, wenn die Zeichenfolge mit "0" beginnt, andernfalls dezimal. Zeiger auf int Nein.
o Oktale ganze Zahl Zeiger auf int Nein.
p Eine Zeigeradresse in hexadezimalen Ziffern. Die maximale Anzahl von Ziffern, die gelesen werden, hängt von der Größe eines Zeigers (32 Bit oder 64 Bit) ab, die von der Computerarchitektur abhängt. „0x“ oder „0X“ wird als Präfix akzeptiert. Zeiger auf void* Nein.
u Ganze Dezimalzahl ohne Vorzeichen Zeiger auf unsigned int Nein.
x Ganze Hexadezimalzahl Zeiger auf int Nein.
e, E, f, F, g, G Gleitkommawert, der aus optionalem Vorzeichen (+ oder -), Dezimalstellen mit Dezimaltrennzeichen und einem optionalen Exponenten („e“ oder „E“) besteht, gefolgt von einer ganzen Zahl (optional mit Vorzeichen). Zeiger auf float Nein.
a, A Ein Gleitkommawert, der aus einer Reihe von einer oder mehreren hexadezimalen Ziffern besteht, die ein optionales Dezimaltrennzeichen und einen Exponenten („p“ oder „P“) enthalten, gefolgt von einem Dezimalwert. Zeiger auf float Nein.
n Kein Eingabe aus dem Stream oder Puffer gelesen. Zeiger auf int, in dem die Anzahl der aus dem Stream oder Puffer erfolgreich gelesenen Zeichen bis zu diesem Zeitpunkt im aktuellen Aufruf von scanf -Funktionen oder wscanf -Funktionen gespeichert ist. Nein.
s Zeichenfolge bis zum ersten Leerzeichen (Leerzeichen, Tabstopps oder Zeilenumbruch) Wenn Sie Zeichenfolgen lesen möchten, die nicht durch Leerzeichen getrennt sind, verwenden Sie eine Reihe von eckigen Klammern ([ ]), wie in scanf der Breitespezifikation beschrieben. Steht bei Verwendung mit scanf -Funktionen für ein Einzelbyte-Zeichenarray und bei Verwendung mit wscanf -Funktionen für ein Breitzeichenarray. In jedem Fall muss das Zeichenarray groß genug für das Eingabefeld und einen automatisch angefügten abschließenden NULL-Wert sein. Erforderlich. Größe einschließlich Platz für einen Nullterminator.
S Umgekehrte Größenzeichenfolge bis zum ersten Leerzeichen (Leerzeichen, Tabstopps oder Zeilenumbruch) Wenn Sie Zeichenfolgen lesen möchten, die nicht durch Leerzeichen getrennt sind, verwenden Sie eine Reihe von eckigen Klammern ([ ]), wie in scanf der Breitespezifikation beschrieben. Steht bei Verwendung mit scanf-Funktionen für ein Einzelbyte-Zeichenarray und bei Verwendung mit wscanf-Funktionen für ein Breitzeichenarray. In jedem Fall muss das Zeichenarray groß genug für das Eingabefeld und einen automatisch angefügten abschließenden NULL-Wert sein. Erforderlich. Größe einschließlich Platz für einen Nullterminator.

Die Größenargumente sollten ggf. in der Parameterliste unmittelbar nach dem angewendeten Argument übergeben werden. Beispielsweise folgender Code:

char string1[11], string2[9];
scanf_s("%10s %8s", string1, 11, string2, 9);

Liest eine Zeichenfolge mit einer maximalen Länge von 10 in string1und eine Zeichenfolge mit einer maximalen Länge von 8 in string2. Die Puffergrößen müssen mindestens um eins größer sein als der Wert für die Breitenangaben, da noch Platz für das Nullabschlusszeichen reserviert werden muss.

Die Formatzeichenfolge kann Einzelbyte- oder Breitzeicheneingaben unabhängig davon bewältigen, ob die Einzelbyte- oder Breitzeichenversion der Funktion verwendet wird. Verwenden Sie deshalb zum Lesen von Einzelbyte- oder Breitzeichen mit scanf - und wscanf -Funktionen Formatbezeichner wie im Folgenden beschrieben:

Zum Lesen von Zeichen als Verwenden Sie diese Funktion Mit diesen Formatbezeichnern
Einzelbyte scanf-Funktionen c, hcoder hC
Einzelbyte wscanf-Funktionen C, hcoder hC
übergreifend wscanf-Funktionen c, lcoder lC
übergreifend scanf-Funktionen C, lcoder lC

Verwenden Sie zum Überprüfen von Zeichenfolgen mit scanf -Funktionen und wscanf -Funktionen die oben dargestellte Tabelle mit den Typformatbezeichnern s und S anstelle von c und C.

Siehe auch

scanf, _scanf_l, wscanf, _wscanf_l