myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C Tastaturpuffer leeren

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 13.01.13, 00:52   #1
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard 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?
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 13.01.13, 07:07   #2
darkolaf1
Anfänger
 
Registriert seit: Feb 2009
Beiträge: 26
Bedankt: 9
darkolaf1 ist noch neu hier! | 0 Respekt Punkte
Standard

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
darkolaf1 ist offline   Mit Zitat antworten
Ungelesen 13.01.13, 12:20   #3
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

?
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){
    int eingelesen=0;
    char dummy=0;
    while( scanf("%d%c",&eingelesen,&dummy)!=2 || dummy != '\n' || eingelesen <= untergrenze || eingelesen >= obergrenze){
        puts("Ungültige Eingabe.");
        while(getchar()!='\n');           //die Zeile hier funktioniert nur dann, wenn aufgrund einer
// komplett Blödsinnigen Eingabe wiederholt wird. Liegt nur die Zahl außerhalb des Intervalls, 
// so wird auf eine weitere Eingabe gewartet.
    }
    return eingelesen;
}
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 13.01.13, 20:04   #4
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

versuchs mal mit [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] ...
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 13.01.13, 20:09   #5
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

geht das auch in C?
schaut so objektorientiert aus, und steht auch cpp dabei
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 13.01.13, 20:36   #6
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

Sorry, habe durch den zweiten Post geglaubt es geht um C++ ... sorry ...

Für C gibt es fflush() ...
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 13.01.13, 21:36   #7
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

fflush(stdin), kenn ich!
funzt aber wie in meinem ersten post erwähnt nur unter Windoof!
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 14.01.13, 00:19   #8
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

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 ...
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 14.01.13, 01:11   #9
revolerheld5
Newbie
 
Benutzerbild von revolerheld5
 
Registriert seit: Dec 2011
Beiträge: 60
Bedankt: 19
revolerheld5 ist noch neu hier! | 0 Respekt Punkte
Standard

Die Lösung zu deinem Problem findest du hier: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
revolerheld5 ist offline   Mit Zitat antworten
Ungelesen 14.01.13, 08:54   #10
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 309
Bedankt: 301
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Oder du schaust dir [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] genauer an.
germgerm ist offline   Mit Zitat antworten
Ungelesen 14.01.13, 17:35   #11
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

Zitat:
Zitat von slahn Beitrag anzeigen
dann solltest du einfach selbst den Puffer leeren, indem du einfach alle Zeichen ausliest ...
genau das möchte ich!
Das geht entweder mit scanf string, oder mit getchar, nur beide varianten verlangen, sollte der tastaturpuffer bereits leer sein, nach einer eingabe
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.


Sitemap

().