scanf, fscanf, vscanf, vfscanf - Anpassung des Datei-Eingabeformats
Standard-C-Bibliothek (
libc,
-lc)
#include <stdio.h>
int scanf(const char *restrict format, …);
int fscanf(FILE *restrict datenstrom,
const char *restrict format, …);
#include <stdarg.h>
int vscanf(const char *restrict format, va_list ap);
int vfscanf(FILE *restrict datenstrom,
const char *restrict format, va_list ap);
vscanf(),
vfscanf():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
Die Funktionenfamilie
scanf() prüft Eingaben wie
sscanf(3),
liest aber aus einer
DATEI. Die korrekte Verwendung dieser Funktionen
ist sehr schwierig und es wird empfohlen, mit
fgets(3) oder
getline(3) ganze Zeilen zu lesen und sie später mit
sscanf(3) oder noch spezialisierteren Funktionen wie
strtol(3)
auszuwerten.
Die Funktion
scanf() liest Eingaben von der Standardeingabe
stdin,
fscanf liest Eingaben von dem Datenstrom-Zeiger
datenstrom.
Die Funktion
vfscanf() verhält sich analog zu
vfprintf(3)
und liest Eingaben von dem Datenstrom-Zeiger
datenstrom, wobei eine
variable Argumentliste von Zeigern benutzt wird (siehe
stdarg(3)). Die
Funktion
vscanf() ist zu
vprintf(3) analog und liest aus der
Standardeingabe.
Bei Erfolg geben diese Funktionen die Anzahl der Eingabeelemente zurück,
die erfolgreich übereinstimmten und zugewiesen wurden. Dies
können weniger sein, als bereitgestellt wurden oder null, wenn ein
»matching failure« auftrat.
Der Wert
EOF wird zurückgegeben, wenn das Ende der Eingabe
erreicht wird, bevor entweder die erste erfolgreiche Umwandlung oder ein
»matching failure« auftrat.
EOF wird auch
zurückgegeben, wenn ein Lesefehler auftritt. In diesem Fall wird die
Fehleranzeige für den Datenstrom gesetzt (siehe
ferror(3)) und
errno so gesetzt, dass es den Fehler angibt.
- EAGAIN
- Der Dateideskriptor, der datenstrom zugrundeliegt,
ist als nicht blockierend gekennzeichnet und die Leseaktion würde
blockieren.
- EBADF
- Der Dateideskriptor, der datenstrom zugrundeliegt,
ist ungültig oder nicht zum Lesen geöffnet.
- EILSEQ
- Eingabebyte-Abfolge bildet kein gültiges
Zeichen.
- EINTR
- Die Leseaktion wurde durch ein Signal unterbrochen; siehe
signal(7).
- EINVAL
- Nicht genug Argumente oder format ist NULL.
- ENOMEM
- Speicher aufgebraucht.
Siehe
attributes(7) für eine Erläuterung der in diesem
Abschnitt verwandten Ausdrücke.
Schnittstelle |
Attribut |
Wert |
scanf(), fscanf(), vscanf(), vfscanf() |
Multithread-Fähigkeit |
MT-Safe locale |
Die Funktionen folgen C99 und POSIX.1-2001.
fgets(3),
getline(3),
sscanf(3)
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
<
[email protected]>, Chris Leick <
[email protected]> und Helge
Kreutzmann <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer