Microsoft KB Archive/41159

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Knowledge Base


INFO: rewind(stdin) Clears Keyboard Buffer

Article ID: 41159

Article Last Modified on 12/11/2003



APPLIES TO

  • The C Run-Time (CRT), when used with:
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5



This article was previously published under Q41159


SUMMARY

To clear the keyboard buffer in Microsoft C use the function rewind() with the stream STDIN, which is associated with the keyboard by default. The function fflush() clears the buffers that C programs use for stream level I/O. It does not clear the device buffer. The following is an example that shows what happens when the keyboard buffer is not cleared, and then how to clear it:

Sample Code

/* Compile options needed: none
*/ 

#include <stdio.h>

void main(void)
{
   int ch ;

   puts( "Input two or more chars. One is read now." );
   ch = getchar();
   putchar( ch );
   putchar( '\n' );

   puts( "The next char is taken from stdin." );
   ch = getchar( );
   putchar( ch );
   putchar( '\n' );

   rewind( stdin );
   puts( "Input two or more chars. One is read now." );
   ch = getchar();
   putchar( ch );
   putchar( '\n' );

   rewind( stdin );
   puts( "You must enter another char because of the rewind(stdin)" );
   ch = getchar( );
   putchar( ch );
   putchar( '\n' );
}


Additional query words: 8.00 8.00c 9.00 9.10

Keywords: kbinfo kbcrt kbcode KB41159