Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czyszczenie bufora klawiatury

Ostatnio zmodyfikowano 2013-04-23 18:29
Autor Wiadomość
Burgers
Temat założony przez niniejszego użytkownika
Czyszczenie bufora klawiatury
» 2013-04-23 11:53:36
Zdaje mi sie, że nie rozumiem jak działa czyszczenie bufora i moj kod nie działa tak jak bym tego chciał. Oto on:
C/C++
#include<iostream>
#include<conio.h>
#include<Windows.h>
using namespace std;
void main()
{
    while( 1 )
    {
        //int a=1;
        if( kbhit() )
        {
            cout << "Podales cos. Robie to tylko raz";
            fflush( stdin ); //tu (ja tak myslalem) czyszczenie bufora klawiatury
            //Tu jakies instrukcje do wykonania
        }
        else
        {
            cout << "oczekuje az cos podasz";
        }
        Sleep( 1000 );
    }
    system( "pause" );
}

Chciałem, żeby wyswietlało sie co sekunde 'oczekuje az cos podasz' a jak wcisne jakis klawisz (narazie byle jaki;p) to wypisze 'Podales cos. Robie to tylko raz', wykona jakis tam blok instrukcji i wyczysci bufor klawiatury i znowu co sekundy bedzie wyświetlał, że 'oczekuje az cos podasz'. Niestety jak coś wcisne to juz cały czas wyswietla mi 'Podales cos. Robie to tylko raz'. Jakby ktoś mógł napisać gdzie tkwi błąd mojego rozumowania to bym był wdzięczny.
PS. Jakby kod się źle wkleił to przepraszam, ale pierwszy raz wklejam ;)
P-81039
pekfos
» 2013-04-23 14:56:51
Nie powinno się używać fflush() dla stdin.
C/C++
if( kbhit() )
{
    getch(); //pobiera znak
}
P-81054
ShayQ
» 2013-04-23 18:29:06
Haha sorki chłopaki ja tu kombinuję, a przecież już wszystko działa xD
Co do tego czyszczenia bufora to wydaje mi się, że cin.sync() byłoby lepsze niż fflush(stdin)
P-81065
« 1 »
  Strona 1 z 1