在Linux安装curses
curses是一个在Linux/Unix下广泛应用的图形函数库,作用是可以在终端内绘制简单的图形用户界面。
- 安装
Ubuntu下安装方法:
在终端输入如下命令:
sudo apt-get install libncurses5-dev
(如果发现找不到这个包,使用命令 sudo apt-get update 更新下包源)
但这样安装的库是没有文档的,就是我们无法使用man命令查询curses库中函数的用法,为了方便查阅curses库中函数的用法,可以使用如下命令安装curses库的文档:
sudo apt-get install ncurses-doc
2.用法
- 包含头文件:curses.h
- 编译时应加上链接语句-lcurses,如:gcc temp.c -o temp -lcurses
3.简单的一个例子:
/*-----------------------------------------------------------------
A very simple example of curses programming
coder: jellen
date: 3-26-2004
----------------------------------------------------------------*/
#include <curses.h> /*这是每个 curses 程序都必须包含的头文件,表明使用了curses库*/
int main()
{
initscr(); /*初始化了屏幕, 使之开始进入curses图形化工作方式*/
box(stdscr, ACS_VLINE, ACS_HLINE); /*draw a box*/
/*box(stdscr, ACS_VLINE, ACS_HLINE); 画了一个框. 有了这个框我们才有"窗体"的感觉. stdscr就是标准屏幕, ACS_VLINE和ACS_HLINE代表构成方框两边的基本元素, 你也可以用 '|'和'-'代替, 不过可能没有ACS_VLINE, ACS_HLINE好看*/
move(LINES/2, COLS/2); /*move the cursor to the center,LINES 和 COLS是curses定义的宏, 代表当前屏幕的最大行数和列数*/
waddstr(stdscr, "Hello, world!"); /*waddstr()函数的作用是在stdscr上打印字符串"hello, world!"*/
refresh();
getch();
endwin(); /*调用endwin()结束curses, 恢复原来的屏幕*/
return 0;
}
常用函数:
3. 重要的函数:
函数 功能
initscr()
初始化curses库和ttty
(在开始curses编程之前,必须使用initscr()这个函数来开启curses模式)
endwin()
关闭curses并重置tty
(结束curses编程时,最后调用的一个函数)
move(y,x) 将游标移动至 x,y 的位置
getyx(win,y,x) 得到目前游标的位置(请注意!是 y,x 而不是&y,&x)
clear() and erase() 将整个萤幕清除(请注意配合refresh() 使用)
echochar(ch) 显示某个字元
addch(ch) 在当前位置画字符ch
mvaddch(y,x,ch) 在(x,y) 上显示某个字元。相当於呼叫move(y,x);addch(ch);
addstr(str) 在当前位置画字符串str
mvaddstr(y,x,str) 在(x,y) 上显示一串字串。相当於呼叫move(y,x);addstr(str);
printw(format,str) 类似 printf() ,以一定的格式输出至萤幕
mvprintw(y,x,format,str) 在(x,y) 位置上做 printw 的工作。相当於呼叫move(y,x);printw(format,str);
getch() 从键盘读取一个字元。(注意!传回的是整数值)
getstr() 从键盘读取一串字元。
scanw(format,&arg1,&arg2…) 如同 scanf,从键盘读取一串字元。
beep() 发出一声哔声
box(win,ch1,ch2) 自动画方框
refresh() 使屏幕按照你的意图显示。比较工作屏幕和真实屏幕的差异,然后refresh通过终端驱动送出那些能使真实屏幕于工作屏幕一致的字符和控制码。(工作屏幕就像磁盘缓存,curses中的大部分的函数都只对它进行修改)
standout() 启动standout模式(一般使屏幕发色)
standend() 关闭standout模式