PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Tastaturpuffer leeren?


mf_2
2004-02-17, 16:36:45
Hallo,

Wie kann ich in C den Tastaturpuffer leeren?

mf_2

Legolas
2004-02-17, 17:10:41
Original geschrieben von mf_2
Hallo,

Wie kann ich in C den Tastaturpuffer leeren?

mf_2


while (getchar() != '\n' && getchar() != EOF){
;
}

Magnum
2004-02-18, 12:14:32
Gibts "fflush(stdin)" noch?

pippo
2007-01-27, 15:33:10
Gibts "fflush(stdin)" noch?

Würd mich jetz auch mal interessieren. Ich les überall, dass fflush nur für den Ausgabepuffer anwendbar ist, aber trotzdem funktioniert es. Verwende VS2005.

Was mich noch verwirrt ist folgender Code:

#include <iostream>
using namespace std;

int main() {
char test;

cin >> test;
cin.get();

return 0;
}

Ich verwende cin.get(); gern, wenn das Programm mal kurz halten soll, jedoch tut es dies nicht, wenn vorher ne Eingabe stattgefunden hat. Für "test" gib ich z.B. ein "e" ein, jedoch hält das Programm anschließend nur, wenn ich vorher z.B. mit fflush(stdin) den Eingabepuffer leere. Woran liegts?

AlSvartr
2007-01-27, 15:53:12
Würd mich jetz auch mal interessieren. Ich les überall, dass fflush nur für den Ausgabepuffer anwendbar ist, aber trotzdem funktioniert es. Verwende VS2005.
Das Verhalten dürfte undefiniert sein und damit kannst Du dich zumindest nicht darauf verlassen, dass es überall funktioniert, selbst wenn es in einigen Fällen so ist (habe ich auch festgestellt).

Trap
2007-01-27, 15:55:53
Das ist das übliche Problem wenn man das get Zeug mit >> mischt.

>> lässt alles was nicht zum zu lesenden Ding gehört im Eingabepuffer, insbesondere whitespace/newlines. Die bekommt man dann wenn man .get benutzt.