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 函数的作用就是刷新物理屏