箭头键用getch()返回什么值?

时间:2015-12-13 20:34:07

标签: c arrow-keys

我读到你必须使用getch()两次才能在按下箭头键时获得一个值。第一个调用为箭头键返回0,第二个调用返回另一个值(例如,右箭头键为77)。我编写了以下程序来确认这一点,但我得到的第一个值是224,而不是零:

#include <stdio.h>  
    int main()  
    {  
        printf("Start: (x to quit)\n");  
        int d = getch();  
        int e = getch();  
        printf("%d", d);  
        printf("\n%d", e);  
    }  

为什么第一个值不为零,224的意义是什么?

2 个答案:

答案 0 :(得分:1)

“转义”代码Branch(Box<Foo>, Box<Foo>) 适用于数字小键盘(关闭0)。专用光标控制键(和NumLock等)使用转义码Home。请试试这个:

224

另请注意,MSVC函数#include <stdio.h> #include <conio.h> int main() { int d=-1, e=-1; printf("Start:\n"); d = _getch(); if (d == 0 || d == 224) e = _getch(); printf("%d %d\n", d, e); return 0; } 已弃用,请使用getch()(这些是_getch()getche()的非回显版本。)

答案 1 :(得分:0)

试试这个

#include <stdio.h>
#include <conio.h>  
int main()  
{  
    printf("Start: (x to quit)\n");  
    char d = _getche();  
    char e = _getche();  
    printf("%c", d);  
    printf("\n%c", e);  
} 

我没有尝试过,但我认为它会起作用