C语言获取方向键,求看看,为什么不能获取方向键?
#include<stdio.h>#defineU0x4800#defineD0x5000#defineL0x4b00#defineR0x4d00intmain(){ch...
#include<stdio.h>
#define U 0x4800
#define D 0x5000
#define L 0x4b00
#define R 0x4d00
int main()
{
char control;
control=getchar();
switch(control)
{
case U:printf("UP\n");
case D:printf("DOWM\n");
case L:printf("LIFT\n");
case R:printf("RIGHT\n");
default:printf("error\n");break;
}
}
总是输出error 展开
#define U 0x4800
#define D 0x5000
#define L 0x4b00
#define R 0x4d00
int main()
{
char control;
control=getchar();
switch(control)
{
case U:printf("UP\n");
case D:printf("DOWM\n");
case L:printf("LIFT\n");
case R:printf("RIGHT\n");
default:printf("error\n");break;
}
}
总是输出error 展开
1个回答
展开全部
方向键并不会进入到输入缓冲区中。为了捕获这些特殊按键你需要使用系统API函数。如果你在Windows下可以使用GetAsyncKeyState函数直接捕获某个按键的硬件中断状态。
更多追问追答
追问
能再具体点吗?我不懂,谢谢。
追答
你不懂Win32编程可直接用getch()实现。
#include<stdio.h>
#include<conio.h>
int main()
{
int ch;
while((ch=getch())!=0x1B) /* Press ESC to quit... */
{
switch(ch)
{
case 0xE0:
switch(ch=getch())
{
case 72: printf("UP\n"); break;
case 80: printf("DOWN\n"); break;
case 75: printf("LEFT\n"); break;
case 77: printf("RIGHT\n"); break;
default: break;
}
break;
default: break;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询