1.Curses 编程搭建[Redhat Linux Enterprise 6.3]
- 挂载软件包镜像(或者在线安装)。vmware挂载镜像的方法如下图:
图1. vmware挂载镜像文件
-
切换到root下,进入挂载目录的Packets目录,查找Curses相关的软件包安装。
[test@localhost ~]$ su - # 切换到root用户 Password: [root@localhost ~]# cd / [root@localhost /]# cd media/ [root@localhost media]# cd RH* [root@localhost RHEL_6.3 i386 Disc 1]# cd Packages/ # 切换到镜像Packets目录 [root@localhost Packages]# ls *curses* # 列出curses相关的软件包 ncurses-5.7-3.20090208.el6.i686.rpm ncurses-devel-5.7-3.20090208.el6.i686.rpm ncurses-term-5.7-3.20090208.el6.i686.rpm ncurses-base-5.7-3.20090208.el6.i686.rpm ncurses-libs-5.7-3.20090208.el6.i686.rpm # 安装相关的包 [root@localhost Packages]# rpm -ivh ncurses-5.7-3.20090208.el6.i686.rpm [root@localhost Packages]# rpm -ivh ncurses-base-5.7-3.20090208.el6.i686.rpm [root@localhost Packages]# rpm -ivh ncurses-devel-5.7-3.20090208.el6.i686.rpm [root@localhost Packages]# rpm -ivh ncurses-libs-5.7-3.20090208.el6.i686.rpm
2.Curses 示例代码分析
- 一个在屏幕上打印输入文字以及序号的示例:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <curses.h> int main() { initscr(); //开始图形模式 noecho(); // 不回显 char temp[128]; char s[128]; int seq = 0; while (scanf("%s", s)) { if (strcmp(s, "exit") == 0) break; clear(); // 清除屏幕 sprintf(temp, "please input :"); mvaddstr(0, 0, temp); // 在指定的坐标打印 int i; for (i=0; i<10; i++) { sprintf(temp, "%s %d %s", s, seq++, s); mvaddstr(i+1, 0, temp); } move(0, 13); // 移动光标到指定坐标 refresh(); //刷新屏幕,如果不刷新屏幕,那么mvaddstr和move将不生效 } endwin(); // 结束图形模式 return 0; }
注:gcc编译代码的时候要记得链接curses的库才行,添加-lcurses即可。