Was macht fflush(stdin)?
Hallo, Ich bin relativ neu im Programmieren und erlerne gerade die Sprache C. Ich bin gerade auf fflush(stdin) gestossen und kann mir nicht erklären was das macht. Ich habe im Internet auch nichts gutes gefunden.
Danke für die Antworten
3 Antworten
Bitteschön:
http://www.cplusplus.com/reference/cstdio/fflush/
Wenn du etwas in einem Stream schreibst, dann wird der anfangs nur in den RAM geschrieben, und "bei Gelegenheit" erst auf die Platte. Jetzt wenn du diesen Stream für was anderes gleich nutzen willst, so wende den fflush() befehl an, er wird das "flushen" und somit den Rest, der noch im RAM steht, gleich in den Stream mit schreiben.
Beim Einlesen ist es ähnlich, da wird durch das Flush alles dahin geschrieben, wo du mit dem Pointer drauf zugreifen willst.
Ob das mit der Beschreibung 100%ig stimmt weiß ich jetzt nicht, aber vom Prinzip her funktioniert das so =)
fflush flusht einen output stream
Da stdin aber input ist solltest du nur ne Fehlermeldung kriegen
Leider nicht, die meisten Compiler schlucken das, deshalb wird es auch in so vielen Lernquellen verwendet. Man kann aber gar nicht oft genug betonen, dass das Ergebnis dieser Aktion de facto unbestimmt ist.
Das wird benutzt um den Tastaturpuffer zu leeren. Ist in dieser Verwendung aber nicht POSIX-konform und funktioniert nur unter Windows. :-p
Insofern funktioniert dein Riecher für suspekten Code also ganz gut ;-)