曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4003|回复: 0
打印 上一主题 下一主题

curses 相关函数 -- getch

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-3-29 01:40:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数原型
int getch(void);

函数描述
在不进行任何模式设置的情况下,getch() 对输入的模式是 nocbreak 。

测试代码
#include <curses.h>
#include <stdlib.h>

int main()
{
        int key;

        initscr();
       
        nocbreak();   /*先设置为 no-cbreak 模式*/
        key = getch();
        if (key == 'Y' || key == 'y') {
                mvwprintw(stdscr, 5, 5, "your answer is yes");
                mvwprintw(stdscr, 6, 5, "%s,%c", "The first char is ", key);
                refresh();
                sleep(3);
        }else {
                mvwprintw(stdscr, 5, 5, "%s", "key is not 'Y' or 'y'\n");
                mvwprintw(stdscr, 6, 5, "%s,%c", "The first char is ", key);
                refresh();
                sleep(3);
        }
        endwin();
        exit(EXIT_SUCCESS);
}
说明-1
在上面的程序中,先设置了 no-cbreak 模式,也就是先缓冲,需等待回车键的确认后才送出处理。所以,对于输入,不论输入字符串多长,最终要让 getch() 得到输入串中的第一个字符,那就需要经过回车把输入送出后才行。
如果在程序中事先使用 nocbreak() 函数,那么就默认的在 cbreak 模式下,如此一来,字符已经输入就马上会被送到程序中处理,毫不等待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 12:18 , Processed in 0.072675 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表