2024年4月11日发(作者:)
curses库的函数的含义:
cbreak():调用cbreak函数后,除了"Del"和"Ctrl"键外,接受其他所有字符输入。
raw()和cbreak()两个函
数都可以禁止行缓冲(line buffering)。区别是:在raw()函数模式下,处理挂起(CTRLZ)、
中断或退出(CTRLC)
等控制字符时,将直接传送给程序去处理而不产生终端信号;而在
cbreak()模式下,控制字符将被终端驱动程序解释成其它字符。
nl()/nonl():输出时,换行是否作为回车字符。nl函数将换行作为回车符,而nonl函数相反。
noecho()/echo():关闭/打开输入回显功能。
intrflush(WINDOW *win, bool bf):win为标准输出。当bf为true时输入Break,可以加快中
断的响应。但是,有可能会造成屏幕输出信息的混乱。
keypad(WINDOW *win, bool bf):win为标准输出。调用keypad函数后,将可以使用键盘上
的一些特殊字符,如方向键,转化成curses.h中的特殊键。
refresh():重绘屏幕显示内容。在调用initscr函数后,第一次调用refresh函数会清除屏幕
显示。
希望能帮到你
Curses 标准作为过渡,位于简单的文本行程序和完全图形化界面(一般也更难于编程)的 X
视窗系统程序(如 GTK/GNOME 和 Qt/KDE )之间。
Curses 函数库的名称来自它所提供的功能,它能够优化光标的移动并减少需要对屏幕进行
的刷新,因此它也减少了必须向字符终端发送的字符数目。
基本使用方法
Curses 例程工作在屏幕、窗口和子窗口上。所谓“屏幕”就是正在写的设备(通常是终端
屏幕,也有可能是 xterm 屏幕)。 Curses 函数库使用两个数据结构来映射终端屏幕,它们
“标准屏幕”,它的工作原理和 stdio 函
是 stdscr 和 curscr 。其中 stdscr
数据结构对应的是
数库中的标准输出 stdout 非常相似,它是 curses 程序中的默认输出插口;而 curscr 数
据结构和 stdscr 相似,但它对应的是当前屏幕的样子。
一个使用 curses 函数库的典型例程如下:
#include
#include
#include
int main()
{
initscr();
move(5,15);
printw("%s", "Hello World!");
refresh();
endwin();
exit(0);
}
当对使用 curses 函数库的程序进行编译时,必须在程序中包含头文件 curses.h ,它是需要
在编译命令行中用 -lcurses 选项对 curses 函数库进行链接。
从上面的程序可以看到,所有 curses 程序必须以初始化函数 initscr 开始,以函数 endwin
结束。函数 initscr 在一个程序中只能调用一次。
提示 :我们可以先调用 endwin 函数退出 curses ,然后通过调研 clrearok(strscr,1) 和
refresh 函数继续 curses 操作。这样,实际上是首先让 curses 忘记物理屏幕的样子,然后
强迫它执行一次完整的屏幕原文重现。
函数 move 和 printw 的功能是移动光标和在当前位置上输出文本。在调用 refresh 函数之
前,输出到 stdscr 上的内容是不会显示在屏幕上的。 refresh 函数的作用就是刷新物理屏


发布评论