[Linux系统编程]Curses编程

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即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值