scanf-Typenfeldzeichen
Die folgenden Informationen gelten auf keine der scanf Familie von Funktionen, einschließlich die sicheren Versionen, wie scanf_s zu.
Das Zeichen type ist das einzige erforderliche Formatfeld; Hinter es alle optionalen Formatfelder. Das type Zeichen bestimmt, ob das entsprechende Argument als Zeichen oder Zeichenfolge, Zahl interpretiert wird.
Typzeichen für scanf Funktionen
Zeichen |
Typ der Eingabe erwartet |
Typ des Arguments |
Größenargument in sicherer Version? |
---|---|---|---|
c |
Char Wenn Sie mit scanf verwendet werden, wird, gibt an; Einzelbytezeichen wenn mit wscanf verwendet werden, wird, gibt Breitzeichen an. Leerzeichen, die normalerweise übersprungen werden, gelesen werden, wenn c angegeben wird. Um folgendes Nicht-weißLeerzeicheneinzelbytezeichen zu lesen, verwenden Sie %1s; um folgende Nicht-weißLeerzeichenbreitzeichen zu lesen, verwenden Sie %1ws. |
Zeiger auf char, wenn mit scanf verwendet wird, funktioniert, Zeiger zu wchar_t, wenn mit wscanf verwendet wird, funktioniert. |
Erforderlich. Größe enthält keine Leerzeichen für einen Nullterminator. |
C |
Gegenüberliegendes Größenzeichen. Wenn Sie mit scanf verwendet werden, wird, gibt an; Breitzeichen wenn mit wscanf verwendet werden, wird, gibt nebeneinander an. Leerzeichen, die normalerweise übersprungen werden, gelesen werden, wenn C angegeben wird. Um folgendes Nicht-weißLeerzeicheneinzelbytezeichen zu lesen, verwenden Sie %1s; um folgende Nicht-weißLeerzeichenbreitzeichen zu lesen, verwenden Sie %1ws. |
Zeiger auf wchar_t, wenn mit scanf verwendet wird, funktioniert, Zeiger zu char, wenn mit wscanf verwendet wird, funktioniert. |
Erforderlich. Größenargument enthält keine Leerzeichen für einen Nullterminator. |
d |
Dezimales ganze Zahl. |
Zeiger auf int. |
Anzahl |
i |
Eine ganze Zahl. Hexadezimal, wenn die Eingabezeichenfolge mit "0x" oder "0X" beginnt, oktal, wenn die Zeichenfolge mit "0 " beginnt; andernfalls Decimal. |
Zeiger auf int. |
Anzahl |
o |
Oktale ganze Zahl. |
Zeiger auf int. |
Anzahl |
u |
Dezimales ganze Zahl ohne Vorzeichen. |
Zeiger unsignedint. |
Anzahl |
x |
Hexadezimale ganze Zahl. |
Zeiger auf int. |
Anzahl |
e, E, f, g, G |
Der float-Wert, der optionalem Zeichen besteht (+ oder -), eine aus einem oder mehrere Dezimalstellen, die enthalten, Dezimaltrennzeichen und optionalem Exponenten ("e" oder "E") gefolgt von optional einen ganzzahligen Wert mit Vorzeichen. |
Zeiger auf float. |
Anzahl |
n |
Kein Eingabelesen dem Stream oder aus dem Puffer. |
Zeiger int, in der gespeicherten Zahl Zeichen erfolgreich ist, Lese- dem Stream oder puffert bis zu diesem Punkt im aktuellen Aufruf scanf-Funktionen oder wscanf-Funktionen. |
Anzahl |
s |
Zeichenfolge, bis zum ersten Leerzeichen (Leerzeichen, Zeilenvorschub oder Registerkarte). Um die Zeichenfolgen zu lesen, die durch Leerzeichen getrennt werden, verwenden Sie Satz eckige Klammern ([ ]), wie in scanf-Breitenangabe erläutert. |
Wenn Sie mit scanf verwendet werden, wird, gibt Einzelbytezeichenarray an; wenn mit wscanf verwendet werden, wird, gibt Zeichenfeld an. In jedem Fall muss Zeichenarray groß genug für Eingabefeld plus NULL groß sein, das automatisch angefügt wird. |
Erforderlich. Größeneinschließungsleerzeichen für einen Nullterminator. |
S |
Gegenüberliegend-Größenzeichenfolge, bis zum ersten Leerzeichen (Leerzeichen, Zeilenvorschub oder Registerkarte). Um die Zeichenfolgen zu lesen, die durch Leerzeichen getrennt werden, verwenden Sie Satz eckige Klammern ([ ]), wie in scanf-Breitenangabe erläutert. |
Wenn Sie mit scanf verwendet werden, wird, gibt Zeichenfeld an; wenn mit wscanf verwendet werden, wird, gibt Zeichenfeld an. In jedem Fall muss Zeichenarray groß genug für Eingabefeld plus NULL groß sein, das automatisch angefügt wird. |
Erforderlich. Größeneinschließungsleerzeichen für einen Nullterminator. |
Die Bezeichner a und A (siehe printf-Typenfeldzeichen), können nicht mit scanf verfügbar.
Die Größenargumente sollten in die Parameterliste direkt nach dem Argument nach Bedarf übergeben werden, das sie anwenden. Folgender Code z. B.:
char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);
liest eine Zeichenfolge mit einer maximalen Länge von 10 in string1 und eine Zeichenfolge mit einer maximalen Länge von 8 in string2. Die Puffergrößen sollten eine mindestens sein mehr als die Breitenangaben, da Platz zum Nullterminator reserviert werden muss.
Die Formatzeichenfolge kann Einzelbyte- behandeln, oder hat ein Breitzeichen unabhängig davon, ob das nebeneinander oder die Breitzeichen-Version der Funktion verwendet wird. Somit Einzelbyte- oder Breitzeichen mit Funktionen scanf und wscanf-Funktionen wie folgt lesen, Verwendungsformatbezeichner.
So wie Lesezeichen |
Verwenden Sie die Funktion |
Bei diesen Formatbezeichnern |
---|---|---|
Einzelbyte |
scanf-Funktionen |
c, hc oder hC |
Einzelbyte |
wscanf-Funktionen |
C, hc oder hC |
wide |
wscanf-Funktionen |
c, lc oder lC |
wide |
scanf-Funktionen |
C, lc oder lC |
Um Zeichenfolgen mit scanf-Funktionen und wscanf-Funktionen zu überprüfen, verwenden Sie die obige Tabelle mit Formattypspezifizierern s und S anstelle von c und C.