Читать книгу C für Dummies - Dan Gookin - Страница 106
Sichere Dateneingaben
ОглавлениеWas jetzt? Müssen wir deshalb aufhören, die Sprache C zu benutzen? Nein, Sie müssen einfach nur damit aufhören, Funktionen wie scanf
zu verwenden. Es gibt eine sichere Alternative dazu: den großen Bruder fgets
. Da ist auch das f
wieder. Schauen Sie sich zunächst das Programm InsultSicher.c
an.
#include <stdio.h>
int main()
{
char idiot[20];
printf("Name eines Idioten: ");
fgets(idiot, 20, stdin);
printf("Yep, ich denke auch, dass %s ein Idiot ist.\n", idiot);
return 0;
}
Listing 3.8: Name: InsultSicher.c
Es fällt sofort auf, dass fgets
als zweiten Parameter die Zahl 20
verwendet. Die kennen wir schon – es ist die Maximallänge von unserem String idiot
mitsamt diesem famosen Nullbyte. Damit verhindert fgets
, dass mehr Zeichen eingelesen werden können, als Platz vorhanden ist, und Speicherüberläufe wie bei scanf
sind damit ausgeschlossen.