C-Bibliotheksfunktionen -scanf()
C-Standardbibliothek - <stdio.h>
Beschreibung
C-Bibliotheksfunktionenint scanf(const char *format, ...)Liest formatierte Eingabe von der Standardeingabe stdin.
Deklaration
Nachfolgend ist die Deklaration der Funktion scanf() aufgeführt.
int scanf(const char *format, ...)
Parameter
- format-- Dies ist eine C-Zeichenkette, die eines oder mehrere der folgenden Elemente enthält:Whitespace-Zeichen, Nicht-Whitespace-ZeichenundFormatbezeichner。
Der Formatbezeichner hat die Form:
[=%[*][width][modifiers]type=]
Die genaue Erklärung lautet wie folgt:
| Parameter | Beschreibung |
|---|---|
| * | Dies ist ein optionales Sternchen, das angibt, dass die Daten aus dem Stream gelesen, aber ignoriert werden können, d. h., sie werden nicht im entsprechenden Argument gespeichert. |
| width | Dies gibt die maximale Anzahl von Zeichen an, die im aktuellen Lesevorgang gelesen werden sollen. |
| Modifikatoren | Gibt einen Größenmodifizierer an, der für die Daten, auf die das entsprechende zusätzliche Argument zeigt, von integer (für d, i und n), unsigned integer (für o, u und x) oder floating-point (für e, f und g) abweicht: h: short integer (für d, i und n) oder unsigned short integer (für o, u und x) l: long integer (für d, i und n) oder unsigned long integer (für o, u und x) oder double precision (für e, f und g) L: long double precision (für e, f und g) |
| type | Ein Zeichen, das den Typ der zu lesenden Daten und die Art und Weise angibt, wie die Daten gelesen werden. Einzelheiten finden Sie in der nächsten Tabelle. |
scanf-Typspezifizierer:
| Type | Qualifizierende Eingabe | Argumenttyp |
|---|---|---|
| %a、%A | Liest einen Gleitkommawert ein (nur in C99 gültig). | float * |
| %c | Einzelnes Zeichen: Liest das nächste Zeichen. Wenn eine andere Breite als 1 angegeben ist, liest die Funktion width Zeichen und speichert sie über das Argument in aufeinanderfolgenden Positionen im Array. Am Ende wird kein Nullzeichen angehängt. | char * |
| %d | Dezimalzahl: Das Vorzeichen + oder - vor der Zahl ist optional. | int * |
| %e、%E、%f、%F、%g、%G | Gleitkomma: enthält einen Dezimalpunkt, ein optionales führendes Vorzeichen + oder -, ein optionales nachfolgendes Zeichen e oder E und eine Dezimalzahl. Zwei gültige Beispiele sind -732.103 und 7.12e4 | float * |
| %i | Liest ganze Zahlen im Dezimal-, Oktal- und Hexadezimalformat ein. | int * |
| %o | Oktale Ganzzahl. | int * |
| %s | Zeichenkette. Liest aufeinanderfolgende Zeichen, bis ein Leerraumzeichen angetroffen wird (Leerraumzeichen können Leerzeichen, Zeilenumbrüche und Tabulatoren sein). | char * |
| %u | Eine vorzeichenlose dezimale Ganzzahl. | unsigned int * |
| %x、%X | Hexadezimale Ganzzahl. | int * |
| %p | Liest einen Zeiger ein. | |
| %[] | Liest einen Zeichensatz ein. | |
| %% | Liest das %-Zeichen. |
- Zusätzliche Argumente-- Je nach der jeweiligen Formatzeichenfolge kann die Funktion eine Reihe zusätzlicher Argumente erfordern, die jeweils einen einzufügenden Wert enthalten und jedes im Formatargument angegebene %-Tag ersetzen. Die Anzahl der Argumente sollte der Anzahl der %-Tags entsprechen.
Rückgabewert
Bei Erfolg gibt die Funktion die Anzahl der erfolgreich abgeglichenen und zugewiesenen Elemente zurück. Wenn das Dateiende erreicht wird oder ein Lesefehler auftritt, gibt sie EOF zurück.
Beispiel
Das folgende Beispiel veranschaulicht die Verwendung der Funktion scanf().
Beispiel
Lassen Sie uns das obige Programm kompilieren und ausführen, das im interaktiven Modus das folgende Ergebnis erzeugen wird:
请输入三个数字:1 2 3 1,2,3
Hinweise zum Parsen:
- 1, &a、&b、&cin&ist der Adressoperator, der jeweils die Speicheradressen dieser drei Variablen ermittelt.
- 2, %d%d%dEs liest drei numerische Werte im Dezimalformat ein. Bei der Eingabe können ein oder mehrere Leerzeichen, Tabulatortasten oder Eingabetasten verwendet werden, um die beiden Datenelemente zu trennen.
Beispiel
Lassen Sie uns das obige Programm kompilieren und ausführen, das im interaktiven Modus das folgende Ergebnis erzeugen wird:
请输入三个数字:1, 2, 3 1, 2, 3
Hinweis:Bei der Eingabe von,muss unmittelbar auf die Zahl folgen; zwischen der Zahl und,sind keine Leerzeichen erlaubt.
Bei der Verwendung von %c für die Eingabe werden Leerzeichen und "Escape-Zeichen" beide als gültige Zeichen behandelt.
Beispiel
Lassen Sie uns das obige Programm kompilieren und ausführen, das im interaktiven Modus das folgende Ergebnis erzeugen wird:
$ ./a.out 请输入三个字符:run r,u,n $ ./a.out 请输入三个字符:r u n r, ,u
Das folgende Beispiel zeigt das Empfangen einer Zeichenkette:
Beispiel
Lassen Sie uns das obige Programm kompilieren und ausführen, das im interaktiven Modus das folgende Ergebnis erzeugen wird:
请输入用户名:admin 请输入您的网站:www.example.com 输入的用户名:admin 输入的网站:www.example.comWeitere Erweiterungen