Provided by: manpages-de-dev_4.27.0-1_all 

BEZEICHNUNG
scanf, fscanf, vscanf, vfscanf - Anpassung des Datei-Eingabeformats
BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT
#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);
Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):
vscanf(), vfscanf():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
BESCHREIBUNG
Die Funktionenfamilie scanf() prüft formatierte 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.
RÜCKGABEWERT
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.
FEHLER
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 Eingabe-Byteabfolge 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.
ATTRIBUTE
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-Sicher locale │
└────────────────────────────────────────────────────────────┴───────────────────────┴──────────────────┘
STANDARDS
C11, POSIX.1-2008.
GESCHICHTE
C99, POSIX.1-2001.
WARNUNGEN
Diese Funktionen erschweren es, Zeilenumbrüche von anderen Leerraumzeichen zu unterscheiden. Dies ist
insbesondere für zeilengepufferte Eingabe, wie beim Standardeingabe-Datenstrom, problematisch.
Diese Funktionen können keine Fehler nach der letzten, nicht unterdrückten Umwandlungsfestlegung
berichten.
FEHLER
Es ist unmöglich, genau zu bestimmen, wie viele Zeichen diese Funktionen aus dem Eingabedatenstrom
verbraucht haben, da sie nur die Anzahl der erfolgreichen Umwandlungen berichten. Falls beispielsweise
die Eingabe »123\n a« ist, wird scanf("%d %d", &a, &b) die Ziffern, den Zeilenumbruch und das
Leerzeichen, aber nicht den Buchstaben a verbrauchen. Dies erschwert es, sich von ungültiger Eingabe zu
erholen.
SIEHE AUCH
fgets(3), getline(3), sscanf(3)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Chris Leick
<c.leick@vollbio.de> und Helge Kreutzmann <debian@helgefjell.de> 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: debian-l10n-german@lists.debian.org.
Linux man-pages 6.9.1 15. Juni 2024 scanf(3)