scanf - Liest vom Standardinput.
Beschreibung
Definiert in stdio
int scanf(const char * format, ...);Parameter
format
Formatstring der geparst wird, ähnlich zu printf
Rückgabewerte
Gibt die größe des gelesenen Strings in Bytes zurück.
Wissenswert
Größe der Eingaben immer begrenzen!
char input[9];
# DON'T:
scanf("%s", &input);
# DO:
scanf("%8s", &input);Buffer und Buffer leeren
Liest scanf weniger Zeichen als im Buffer anstehen, bleiben die restlichen Zeichen im Buffer und werden erst beim nächsten lesen (z.B. durch scanf) abgeholt. Als Lösung kann der Buffer geleert werden:
# Entweder mit fflush
# Funktioniert aber nicht bei jedem Betriebssystem
fflush(stdin);
# Oder buffer manuell leeren:
while(getchar() != '\n');Probleme mit scanf
- Es findet keine Überprüfung der Eingabe statt.
- Wenn nicht genug Speicher reserviert wurde, wird einfach der darauffolgende Speicher überschrieben.
- Benutzereingaben können gefährliche Sicherheitslücken provozieren
Immer die Eingaben begrenzen und validieren!