flush input buffer?

Nick Sabalausky a at a.a
Sat Oct 18 13:18:37 PDT 2008


"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.




More information about the Digitalmars-d-learn mailing list