#include <stdio.h> int scanf(const char *format[, address, ...]);
Liest und formatiert Eingabe aus dem Stream stdin.
Für eine Verwendung dieser I/O-Funktion in einer Windows-Anwendung siehe EasyWin.
Die Funktion scanf führt folgende Aktionen durch:
Für jedes Eingabefeld muss eine Formatieranweisung und Adresse existieren.
Eine scanf-Funktion kann mit dem Lesen eines Eingabefeldes oder mit dem gesamten Lesen vorzeitig abbrechen, ehe ein Feldendezeichen (Whitespace) erreicht wird.
Die Gründe dafür sind in "Wenn ...scanf-Funktionen abbrechen" beschrieben.
Der Format-String steuert die Art, wie jede ...scanf-Funktion die Eingabefelder liest, konvertiert und speichert.
Der Format-String ist ein Zeichenstring, der drei Arten von Objekten enthält:
In ...scanf-Format-Strings, haben Formatieranweisungen die folgende Form:
% [*] [width] [F|N] [h|l|L] type_char
Jede Formatieranweisung beginnt mit dem Prozentzeichen (%).
Nach dem Prozentzeichen % folgen in der unten stehenden Reihenfolge:
Komponente | Optional/Obligatorisch | Funktion/Auswirkung |
---|---|---|
[*] | (Optional) | Zeichen für Zuweisungsunterdrückung. Unterdrückt die Zuweisung des nächsten Eingabefeldes. |
[width] | (Optional) | Breitenangabe. Maximale Anzahl der zu lesenden Zeichen. Es können weniger Zeichen gelesen werden, wenn die ...scanf-Funktion auf ein Whitespace-Zeichen oder ein nicht-auswertbares Zeichen trifft. |
[F|N] | (Optional) | Zeigergrößenmodifikation. Überschreibt die Standardgröße der Adresse: N = near-Zeiger F = far-Zeiger |
[h|l|L] | (Optional) | Argumenttypmodifikation h = short int l = long int, wenn type_char eine Integer-Konvertierung festlegt. l = double, wenn type_char eine Gleitkommakonvertierung festlegt. L = long double, (nur mit Gleitkommakonvertierung zulässig) |
type_char | (Obligatorisch) | Typzeichen (siehe dort) |
Die Information in der folgenden Tabelle basiert auf der Annahme, dass keine optionalen Zeichen, Anweisungen oder Modifikationen (*, Breite oder Größe) in der Formatieranweisung enthalten sind.
Typ | Erwartete Eingabe | Argumenttyp |
---|---|---|
Zahlen | ||
d | Dezimal Integer | Zeiger auf int (int *arg) |
D | Dezimal Integer | Zeiger auf long (long *arg) |
e,E | Gleitkomma | Zeiger auf float (float *arg) |
f | Gleitkomma | Zeiger auf float (float *arg) |
g,G | Gleitkomma | Zeiger auf float (float *arg) |
o | Oktal Integer | Zeiger auf int (int *arg) |
O | Oktal Integer | Zeiger auf long (long *arg) |
i | Dezimal, oktal oder hexadezimal Integer | Zeiger auf int (int *arg) |
I | Dezimal, oktal, od. hexadezimal Integer | Zeiger auf long (long *arg) |
u | Dezimal Integer vorzeichenlos | Zeiger auf unsigned int (unsigned int *arg) |
U | Dezimal Integer vorzeichenlos | Zeiger auf unsigned long (unsigned long *arg) |
x | Hexadezimal Integer | Zeiger auf int (int *arg) |
X | Hexadezimal Integer | Zeiger auf int (int *arg) |
Zeichen | ||
s | Zeichen-String | Zeiger auf Array mit chars (char arg[]) |
c | Zeichen | Zeiger auf char (char *arg), wenn eine Feldbreite zusammen mit dem Zeichen c (z.B. %5c) gegeben ist. Zeiger auf Array mit W-Zeichen (char arg[W]) |
% | %-Zeichen | Keine Konvertierung; % wird gespeichert |
Zeiger | ||
n | Zeiger auf int (int *arg): Die Anzahl der erfolgreich gelesenen Zeichen (bis zu %n) wird in int gespeichert. | |
p | Hexadezimale Form YYYY:ZZZZ oder ZZZZ | Zeiger auf ein Objekt (far* or near*) %p Standardkonvertierung, Zeigergröße abhängig vom Speichermodell |