fgets mit Längenkontrolle -->aber funzt nicht richtig
-
Hi Forum,
ich habe folgendes Problem:
Ich möchte mit einer Unterfunktion Zeichenketten einlesen. Die Zeichenkette soll in einem Array der Größe SIZE gespeichert werden.
klappt soweit auch ganz gut, nur wenn ich mehr als SIZE zeichen eingebe überspringt er meine nächste Eingabe.hier mal die Unterfunktion:
void readtext (int ssize, char str[]) { fgets(str, ssize, stdin); }
das rufende Programm sieht so aus:
... readtext(SIZE, name); readtext(SIZE, str); readtext(SIZE, ort); ...
ist das normal, oder kann ich irgendwie die zusätzlich eingelesenen Zeichen wieder löschen?
Greets
-
ist normal, weil das ENTER-Zeichen noch im Eingabepuffer steht.
Füge mal vor dem Aufruf von fgets(...) einfflush(stdin);
ein
mfg
Horst
-
Es steht nicht nur das ENTER im Eingabepuffer, sondern all der Text, der über ssize hinaus geschrieben wurde.
Hinweis:
fflush(stdin) hat undefiniertes Verhalten! Siehe dazu auch die FAQ.