Scanf wird übersprungen (C-Programmierung)?

3 Antworten

Man sollte scanf() eigentlich besser gar nicht verwenden, weil es damit die Gefahr gibt, dass Eingaben reinkommen, die größer sind als der vorbereitete Buffer. Besser mit fscanf() und buffer limit arbeiten.

Dass der scanf() bei Dir sofort vor Lesen der Eingabe zurückgekommen ist, dürfte daran liegen, dass diese nonstandard-Extension "[\n]" zwischen dem "%" und dem "s" (für whitespace-separated string) von Deiner C-Library nicht erkannt wird und damit ein sofortiger Abbruch erfolgt.

Im übrigen solltest Du im Hinterkopf behalten, dass auf Linux die Standardeingabe im Normalfall erstmal "line buffered" läuft. D. h. Du müsstest ggf. mit setbuf() o. ä. auf zeichenweises Einlesen umstellen. Sonst bekommst Du evtl. noch weitere komische Nebeneffekte.

Du solltest in scanf nicht \n schreiben. einfach nur %s wäre richtig. Sofern mein Wissen nicht eingerostet ist.

Woher ich das weiß:Hobby – PC seit den frühen 90ern

Baltazar20173 
Beitragsersteller
 15.03.2018, 22:08

Das klappt ebenfalls, danke!