Systemnahe Programmierung in C: Tipps zu
scanf
Tipps zu
scanf
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);
Rückgabewert
Anzahl richtig eingelesener Variablen
oder
EOF, wenn die Eingabe gelesen wurde, bevor eine Zuweisung gemacht worden ist.
scanf
unflexibel
nur Eingabe von
stdin
fscanf
unflexibel bei Fehlern
Gefahr: etwas ist eingelesen, aber enthält Eingabefehler
das Lesen kann nicht wiederholt werden
Eingabe ist weg
besser
eine Zeile in einen Puffer einlesen
aus dem Puffer mit
sscanf
formatierte Eingabe
Beispiel
#include
<stdio.h>
...
#define max 1024
...
char
buffer[max];
if
(fgets(buffer, max, stdin) == buffer) {
... sscanf(buffer,
"..."
, &v1, ..., &vn);
}
else
{
...
/* Einlesefehler behandeln */
}
fgets
ließt eine Zeile ein einschließlich des Zeilenendezeichens
ließt aber maximal
n
Zeichen ein
Letzte Änderung: 11.01.2007
©
Prof. Dr. Uwe Schmidt