Systemnahe Programmierung in Chome Systemnahe Programmierung in C: Tipps zu scanf Prof. Dr. Uwe Schmidt FH Wedel

Tipps zu scanf

weiter

weiter

Gefahren bei dem Gebrauch mit scanf

C-lib
int scanf(char * format, ...);
int fscanf(FILE * stream, char * format, ...);
int sscanf(char * input, char * format, ...);
char * fgets(char * s, int n, FILE * stream);
weiter
Rückgabewert
Anzahl richtig eingelesener Variablen
oder
EOF, wenn die Eingabe gelesen wurde, bevor eine Zuweisung gemacht worden ist.
weiter
schlecht
scanf unflexibel
nur Eingabe von stdin
weiter
schlecht
fscanf unflexibel bei Fehlern
weiter
merke
Gefahr: etwas ist eingelesen, aber enthält Eingabefehler
das Lesen kann nicht wiederholt werden
Eingabe ist weg
weiter
besser
eine Zeile in einen Puffer einlesen
aus dem Puffer mit sscanf formatierte Eingabe
weiter
Beispiel
#include <stdio.h>
...
#define max 1024
...
char buffer[max];
if (fgets(buffer, max, stdin) == buffer) {
... sscanf(buffer, "...", &v1, ..., &vn);
} else {
... /* Einlesefehler behandeln */
}
weiter
fgets
ließt eine Zeile ein einschließlich des Zeilenendezeichens
ließt aber maximal n Zeichen ein
weiter

Letzte Änderung: 11.01.2007
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel