今天编写了一个程序,需要检测键盘是否按下了ESC键以结束输入。ESC的键值是27,man了一下getch,以及在网上看了一下getch的应用示例。man一下也会发现需要包含curses.h头文件。而curses是linux/unix下的一个图形函数库,重绘终端界面用的。
initscr()函数重绘了屏幕,至endwin()前都在重绘屏幕上输出,因而注意printf位置,避免看不到其执行效果。将1改为0,验证我的想法,贴一段测试代码如下:
#include <stdio.h>
#include <curses.h>
void main()
{
int ch;
#if 1
printf("Input a char:\n");
initscr();
ch = getch();
endwin();
printf("You input:%d\n", ch);
#else
initscr();
printw("Input a char:\n");
ch = getch();
printw("You input:%d\n", ch);
getch(); //运行至此暂停,比便看不到printw执行效果。
endwin();
#endif
}
编译:gcc testgetch.c -l curses