由于getch输入不需要按回车键,故在一些需要快速输入的场合很有用,以下提供一个例子,希望和大家一起分享。

前面出了一篇关于Windows的,这个是在Linux下使用的。由于Linux使用较少,存在不足之处大家多包涵。

/* getch的使用示例

在提供了Curses库的UNIX/Linux/OS X环境下运行

 */

#include <curses.h> //UNIX/Linux下的库,定义了getch();等函数
#include <ctype.h>
#include <stdio.h>

int main(void)
{
int ch;
int retry;

initscr(); //生成屏幕并初始化库,使用Curses库时必须最先调用该函数
cbreak(); //禁止行缓冲
noecho(); //禁止输入的字符显示在画面上
refresh(); //刷新画面

do {
printf("请按键。");
fflush(stdout);

ch = getch(); //返回输入的字符
printf("\n\r按下的键是%c,值是%d。\n\r",
//Curses库的特点:1.输出\n\r光标才会移到下一行开头
isprint(ch) ? ch : ' ', ch);

printf("再来一次?(Y/N):");
fflush(stdout); //2.即使输出\n也需要将堆积在缓冲区的未输出字符清空
retry = getch();
if (isprint(retry))
putchar(retry);
putchar('\n');
fflush(stdout);
} while (retry == 'Y' || retry == 'y');
endwin(); //使用库时用于最后收尾的函数,使用Curses库时必须最后调用该函数(画面字符全部消失)
return 0;

}

Logo

更多推荐