setbuf() Doesn't Control MS-DOS Buffer or Keyboard BufferLast reviewed: July 17, 1997Article ID: Q45563 |
5.10 6.00 6.00a 6.00ax 7.00 | 1.00 1.50
MS-DOS | WINDOWSkbprg The information in this article applies to:
SUMMARYThe getchar() function will wait for a carriage return even if setbuf() is used to unbuffer stdin.
MORE INFORMATIONThe function setbuf() affects a stream file buffer, such as stdin, but has no effect on the keyboard or MS-DOS device buffers. The stream I/O function getchar() can read a character from the keyboard buffer only when the keyboard buffer is flushed by either being filled, by a carriage return, or by an interrupt 0x21, function 0xC call. To read normal characters directly from the keyboard, you can use the console I/O function getch(). To read control codes such as ALT+Q (echo subsequent output to printer) or ALT+R (pause output), you can use the _bios_keybrd() function. For more information on this function, query on the following word in the Microsoft Knowledge Base:
_bios_keybrd()The following example demonstrates the difference between using getchar() and getch().
Sample Code
/* Compile options needed: none */ #include <stdio.h> #include <conio.h> void main (void){ setbuf (stdin, NULL); /* cause stdin to be unbuffered */ if (getchar () != EOF ) printf ("getchar() still waits for return key\n"); if (getch () != EOF ) printf ("getch() does not wait for return key\n");}
|
Additional reference words: kbinf 1.00 1.50 5.10 6.00 6.00a 6.00ax 7.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |