Wie Sie den Tastaturpuffer Typeahead

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

Zusammenfassung

BIOS-Tastatur Typeahead Puffer geleert, kann MS-DOS-Interrupt 21 Funktion 0CH verwendet werden. Diese Funktion löscht den Tastaturpuffer Typeahead und ruft dann eine ins AL angegebene Funktion lesen. AL-Register kann 0 x 01, 0 x 06, 0 x 07, 0 x 08 oder 0x0A eine gültige lesen festzulegen. Wenn Sie nicht nach dem leeren des Puffers lesen möchten, können Sie eine ungültige Zahl in AL angeben.


Eine andere Methode für das Leeren des Puffers BIOS ist Konsole e/a-Funktion getch aufrufen, bis die Funktion kbhit() false ist. Diese Methode zeigt das Programm unten und hat den Vorteil nutzbaren unter OS/2 und MS-DOS.

Weitere Informationen

Der Puffer von C-Laufzeitfunktionen für den Stream "Stdin" implementiert unterscheidet sich von den Tastaturpuffer Typeahead BIOS. Der Puffer für Stdin verwenden, um die Funktion fflush(). Diese Methode wird jedoch nicht den BIOS-Puffer entleert. Um vollständig geleert werden, müssen Sie sowohl BIOS Puffer entleert, wie oben beschrieben und Stdin Fflush fordern.


Das folgende Beispielprogramm zeigt:

Beispielcode

/* Compile options needed: none*/ 
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <dos.h>
void main (void)
{
time_t start, work ;
char str [50] ;
puts ("type for getchar(). Go to stdin's buffer.") ;
// user can type more than one character and an Enter.
getchar () ;
puts ("Type fast, 5 seconds. Go to BIOS buffer.") ;
// user can type anything including multiple Enters.
time (&start) ;
work = start ;
while ( (work - start) < 5 ) time (&work) ;
bdos (0xC, 0, 0) ; // clear BIOS keyboard buffer
// Alternative method:
// while (kbhit()) getch();
fflush (stdin) ; // clear stdin's buffer
puts ("Should be waiting again.") ;
gets (str) ;
puts (str) ;
}

Eigenschaften

Artikelnummer: 43993 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback