两次调用 getch()读取扩展字符

Microsoft C 中读取扩展字符必须进行两次调用 getch() 因为第一次调用返回的值,该值指示该键的扩展的字符。第二个调用返回的实际的键代码。当读取扩展的字符时,0xE0 或 0x00,具体取决于按下键扩展将是第一个返回值。

示例代码

#include <stdio.h>
#include <conio.h>

void main(void)
{
    int ch, scan;

    do {
        ch = getch();    /* 1st getch() gets ASCII code */ 
        printf("Character is %d\n", ch);
           if (ch == 0x00 || ch == 0XE0)  { /* if extended key */ 
            scan = getch();  /* 2nd getch() gets "scan code" */ 
            printf("\tExtended character:  scan is %d\n", scan);
        }
    }  while (ch != 27);    /* exit loop on ESC */ 
}
击键和扫描代码的讨论,对于"新 Peter 诺顿程序员指南 》 与 IBM 的 PC 和 PS/2 接口,"通过引用 Peter 诺顿和理查德 Wilton。

你可能感兴趣的:(两次调用 getch()读取扩展字符)