![]() |
C Tastaturpuffer leeren
Ich weiß, das es darüber dutzende Einträge im Internet gibt, aber irgendwie konnte mich keiner Zufrieden stellen
fflush(stdin); funktioniert nur auf Windows, while(getchar()!='\n'); und scanf("%c",&variable); haben den Effekts, das, im Falle eines bereits leeren Puffers, auf eine Eingabe gewartet wird. Jemand eine Idee, wie ich das OS unabhängig, mit einer Schleife realisieren kann? |
Ich hoffe es hilft :
#include <iostream> using namespace std; int main () { int a; do { cout << "eingabe"<<"\n"<<"zum abbrechen 5 eingeben" <<endl; cin >> a; }while(a!=5); } Es wird solange die Schleife wiederholt , bis die Abbruchbedingung "5" eingegeben wurde. Schnell getestet auf der bash |
?
ich will ja eben nicht, das man nochmal was eingeben muss, sondern einfach, dass der Tastaturpuffer geleert wird, so wies mit fflush(stdin) funktioniert. Verwendungszweck: Code:
int liesInt(int untergrenze, int obergrenze){ |
versuchs mal mit [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] ...
|
geht das auch in C?
schaut so objektorientiert aus, und steht auch cpp dabei |
Sorry, habe durch den zweiten Post geglaubt es geht um C++ ... sorry ...
Für C gibt es fflush() ... |
fflush(stdin), kenn ich!
funzt aber wie in meinem ersten post erwähnt nur unter Windoof! |
Sehe gerade dass in C die funktion eigentlich nur für Output deffiniert ist ... dann solltest du einfach selbst den Puffer leeren, indem du einfach alle Zeichen ausliest ...
|
Die Lösung zu deinem Problem findest du hier: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
|
Oder du schaust dir [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] genauer an.
|
Zitat:
Das geht entweder mit scanf string, oder mit getchar, nur beide varianten verlangen, sollte der tastaturpuffer bereits leer sein, nach einer eingabe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.