كيفية مسح المخزن المؤقت Typeahead لوحة المفاتيح

ملخص

لمسح المخزن المؤقت typeahead لوحة المفاتيح BIOS، قد يتم استخدام 0CH الدالة 21 مقاطعة MS-DOS. هذه الدالة مسح المخزن المؤقت typeahead لوحة المفاتيح وثم استدعاء دالة قراءة المحدد في سجل ال. يمكن تسجيل AL 0x01 0x06، 0x07، 0x08 أو 0x0A لتحديد دالة قراءة صالح. إذا لم تكن تخطط لقراءة بعد مسح التخزين المؤقت، يمكنك تحديد رقم غير صحيح في ال.


أسلوب آخر لمسح المخزن المؤقت BIOS لاستدعاء getch() الدالة إدخال/إخراج وحدة التحكم حتى يصبح kbhit() الدالة false. هذا الأسلوب هو موضح في البرنامج أدناه وتتميز بأنها قابلة للاستخدام ضمن OS/2، بالإضافة إلى MS-DOS.

مزيد من المعلومات

المخزن المؤقت الذي تنفذه دالات وقت التشغيل C للدفق "stdin" يختلف عن المخزن المؤقت typeahead لوحة المفاتيح BIOS. لمسح المخزن المؤقت ل stdin، استخدم fflush () الدالة. ومع ذلك، هذا الأسلوب سوف لا تدفق المخزن المؤقت BIOS. ليتم مسح تماما، يجب مسح المخزن المؤقت BIOS كما هو موضح أعلاه وتستدعي فلاش stdin.


نموذج البرنامج التالي مثال:

نموذج لتعليمة برمجية

/* 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) ;
}

خصائص

رقم الموضوع: 43993 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات