Mail Archives: djgpp/1999/07/07/01:37:07

From: Chih Hui <wenzh AT singmail DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Flushing input stream?
Date: Tue, 06 Jul 1999 22:04:27 +0800
Organization: Subscriber of Pacific Internet
Lines: 42
Message-ID: <>
References: <37819F79 DOT 72629349 AT singmail DOT com> <3781B0AF DOT 8905D645 AT earthlink DOT net>
Mime-Version: 1.0
X-Mailer: Mozilla 4.03 [en] (Win95; I)
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

> Think for a moment.  What do you _mean_ by flushing a buffer.  The action
> performed when you flush an output buffer is to complete output which you have
> already initiated.  The data which is in the output buffer is written to the
> output device.  Now you want to flush an input stream.  This mean you want to
> complete pending input.  But that is in fact not what most people mean when they
> ask this question.  There is no intuitive "correct" action on "flushing" an
> input stream, and there is no defined behavior.  Better you should ask Scott
> Nudds.
> If you mean "read characters until an end-of-line is read", then you obviously
> have the answer stated in your question, and no further answer is required.

No, I mean to clear the input stream of any characters. For example,
when I run
the code below, I enter 'A' at the first prompt. getchar() would
correctly get
the letter 'A', but the second getchar() would simply get the newline
leftover from the first getchar(). 

In Turbo C, a convenient, though non-standard, way is to fflush(stdin),
which will
discard all the pending characters in the standard input. How do I
achieve this in


PS. Who is Scott Nudds?

  char ch1, ch2;

  printf("Enter a letter: ");
  ch1 = getchar();

  /* flush input here */

  printf("Enter another letter: ");
  ch2 = getchar();

- Raw text -

  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019