[c] stdin leeren

Hi,

die URL konnte ich zwar nicht aufrufen, aber wenn ich mal davon ausgehe dass der Artikel "Why fflush(stdin) is wrong" hierß, dann ist in diesem Artikel auch der Link auf eine mögliche Lösung deines Problems versteckt:

This is incorrect, and should be avoided, here is why. To learn how to flush the input buffer correctly, read this FAQ entry.

Der Link steckt hinter "this FAQ entry", ist aber nicht markiert. :rolleyes: (Link Obfuscation?)

Und da das mit den URLs posten nicht klappt, suchst du einfach diesen Artikel: "FAQ > How do I... (Level 2) > Flush the input buffer" oder clickst halt auf den (versteckten) Link.

Regards,

Case
 
meines wissens, müsste es theoretisch möglich sein, das was du im term/konsole siehst, muss ja auch irgendwo gespeichert werden, aber wenn man im term z.B clear ausführt wird die seite auch nur mit whitespaces gefüllt, und wenn man scrollt ist alles wieder da, so könntest dus doch auch machen!
-EDIT-
der link den case meinte:

http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?id=1043284392&answer=1044873249


Gruss Flas!!
 
Zuletzt bearbeitet:
Er möchte den Eingabepuffer leeren, wenn er den mit Whitespaces auffüllt, wird er auch nicht glücklich werden.
 
case schrieb:
Der Link steckt hinter "this FAQ entry", ist aber nicht markiert. :rolleyes: (Link Obfuscation?)

oh man und ich dacht die meinen den aktuellen FAQ entry. Hab mich schon gewundert welchen Müll die schreiben. Naja danke. Wird wohl Zeit "always border on links" im opera zu aktivieren......

fidor(..)
 
So, gleich vorweg: fflush() ist für Streams, die zum Schreiben geöffnet wurden, vorgesehen. Das Verhalten bei Streams, die zum Lesen geöffnet sind, ist undefiniert. Windows zB leert wirklich den Eingabebuffer. Auch bei FreeBSD wurde mal überlegt, ob man dieses Verhalten adaptieren sollte.

Um also den Buffer eines Streams zum Lesen zu leeren, kann man fpurge() oder rewind() nehmen.

Also:
Code:
rewind(stdin);
/* oder */
fpurge(stdin);

So, und jetzt haltet euch fest: Man hätte nur einmal in die Manpage von fflush(3) sehen müssen, um das in Erfahrung zu bringen :eek:

.align64
 
.align64 schrieb:
So, und jetzt haltet euch fest: Man hätte nur einmal in die Manpage von fflush(3) sehen müssen, um das in Erfahrung zu bringen :eek:

hm fflush hab ich natürlich auch gelesen. Aber fpurge(stdin) und rewind(stdin) hat nicht so funktionniert wie angenommen. Vielleicht hab ich aber auch irgendwas falsch gemacht.

fidor(..)
 
Zurück
Oben