Was macht fflush(stdin)?

3 Antworten

fflush flusht einen output stream

Da stdin aber input ist solltest du nur ne Fehlermeldung kriegen


dergutekoenig  27.02.2013, 17:13

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.

0

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 =)


Thomas117 
Beitragsersteller
 27.02.2013, 08:32

Danke für die gute Antwort :)

0

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 ;-)