flush input buffer?

Michael P. baseball.mjp at gmail.com
Sat Oct 18 15:56:55 PDT 2008


Nick Sabalausky Wrote:

> "Michael P." <baseball.mjp at gmail.com> wrote in message 
> news:gddeog$26je$1 at digitalmars.com...
> > Nick Sabalausky Wrote:
> >
> >> "Michael P." <baseball.mjp at gmail.com> wrote in message
> >> news:gdd02h$1uui$1 at digitalmars.com...
> >> > Okay, so I'm sure if flushing the input buffer is what I want, or if 
> >> > that
> >> > even makes sense, so I'll say what I'm trying to do first to see if 
> >> > that's
> >> > what I want.
> >> > So, I made this program where you specify the number of digits in a 
> >> > number
> >> > you want to remember. Then, it ask you how many questions.
> >> > Anyways, a number will show up. Then, you have 4 seconds to remember.
> >> > Then, 30 lines are skipped as my "clearing of the screen". Sleep 
> >> > another
> >> > second.
> >> > You are then asked to type in the number you saw.
> >> > The problem I have is that the user can just type in the number while 
> >> > they
> >> > see it, and what the typed will show up when the prompt comes up.
> >> > What I want to do is "flush the input buffer" just before I request for
> >> > input so the user can no longer type in the number while they see it.
> >> >
> >> > -Michael P.
> >>
> >> I'm not sure what lib or function you're using to read the input, but 
> >> there
> >> should be some way to do an asynchronous read from the input buffer to 
> >> read
> >> input *only* if input already exists and just sinply return nothing 
> >> instead
> >> of waiting if no input exists. Then you could do something like this:
> >>
> >> do
> >> {
> >>     inputDataToThrowAway = AsyncRead();
> >> } while(data was actualy read);
> >> output("Please enter your answer");
> >> waitForInputAndReadIt();
> >>
> >>
> >
> > Oh yeah, forgot to say that I am using din.readf() for input.
> 
> Ok, I took a look at the phobos documentation for that. Looks like this 
> should work (I use Tango instead of phobos, so I haven't tested it. 
> Hopefully it'll work):
> 
> void clearInputBuffer()
> {
>     while(din.available() > 0)
>     {
>         din.getc();
>     }
> }
> 
> Calling that function before you read the user's input *should* do what 
> you're looking for.
> 
> 

No, unfortunately that didn't work.
I tried calling din.flush() before the input too and it didn't work either.


More information about the Digitalmars-d-learn mailing list