因此,对于键盘上的向上键,我得到27,令人惊讶的是,对于向下键我也得到27.我需要我的程序在上下键上表现不同,我似乎无法弄明白。我正在使用Linux,需要它才能用于Linux。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
int c = getchar();
if(c==27)
{
printf("UP");
}
if(c==28)
{
printf("DOWN");
}
}
答案 0 :(得分:8)
27
表示您正在获取箭头的ANSI转义序列。它们将是三个字符的序列:27,91,然后是65,66,67,68(IIRC),用于向上,向下,向右,向左。如果您通过拨打27
获得getchar()
,则再拨打两次以获取91
以及确定按下箭头键的数字。
正如其他人提到的,这是特定于平台的,但您可能并不在意。
答案 1 :(得分:2)
这是程序,它被编写为使用ncurses库,并显示按下的箭头键。
#include<ncurses.h>
int main()
{
int ch;
/* Curses Initialisations */
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
printw("Press E to Exit\n");
while((ch = getch()) != 'E')
{
switch(ch)
{
case KEY_UP: printw("\nUp Arrow");
break;
case KEY_DOWN: printw("\nDown Arrow");
break;
case KEY_LEFT: printw("\nLeft Arrow");
break;
case KEY_RIGHT: printw("\nRight Arrow");
break;
default:
printw("\nThe pressed key is %c",ch);
}
}
printw("\n\Exiting Now\n");
endwin();
return 0;
}
编译时,你必须链接到ncurses库。
gcc main.c -lncurses
这是一个tutorial,可以帮助您开始使用ncurses。
答案 2 :(得分:1)
在http://www.gnu.org/software/ncurses/查看ncurses库。将它链接到您的程序将使您能够通过关键事件做各种简洁的事情。阅读文档,看看是否要使用它。它提供了您所说的功能。
快乐的编码!
答案 3 :(得分:0)
按下按键时,按下的键会使您按下时产生的字符混乱。按下shift键时,你希望得到一个字符吗?试试这个程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
do
{
int c = getchar();
printf("c=%d\n", c);
}
while (1);
}
尝试按向上箭头然后输入。然后尝试按下向下箭头然后输入。您将看到将键转换为字符并不简单。