码迷,mamicode.com
首页 > 系统相关 > 详细

linux屏幕编程:curses库的使用

时间:2015-08-13 12:29:29      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:curses库   屏幕编程   curses.h   


  curses库是一组函数,可以用它来设置光标的位置和终端屏幕上显示的字符样式。curses库将终端屏幕看成是由字符单元组成的网格,每一个单元由(行、列)坐标对标示。坐标原点是屏幕的左上角,行坐标自上而下递增,列坐标自左而右递增。

   这里介绍几个常用函数:

            initscr()        初始化curses库和tty

            endwin()         关闭curses库并重置tty

            refresh()        使屏幕按照自己的意图显示

            move(r,s)        移动光标到屏幕的(r,s)位置

            addstr(s)        在当前位置画字符串s

            addch(c)         在当前位置画字符c

            clear()          清屏

            standout()        启动standout模式(一般使屏幕反色)

            standend()        关闭standout模式


一个简单的curses库程序curses1.c:

  

#include <stdio.h>
#include <curses.h>

main(){
        initscr();
        clear();
        move(10,20);
        addstr("Hello,world");
        move(LINES-1,0);       //LINES是当前终端的行数
        refresh();
        getch();
        endwin();
}
$gcc -o curese curses.c

  编译报错如下:

       error: curses.h: No such file or directory

  即缺少curses库文件,检查所依赖的软件包:

       

$yum provides */curses.h
 ...
 ncurses-devel-5.7-3.20090208.el6.x86_64 : Development files for the ncurses
                                         : library
 Repo        : server
 Matched from:
 Filename    : /usr/include/ncurses/curses.h
 Filename    : /usr/include/curses.h
 Filename    : /usr/include/ncursesw/curses.h
 ...

   yum install ncurses-devel -y          //安装该软件包即可

[root@server1 7]# gcc -o curses1 curses1.c
/tmp/cclUPDCB.o: In function `main‘:
curses1.c:(.text+0x5): undefined reference to `initscr‘
curses1.c:(.text+0xc): undefined reference to `stdscr‘
curses1.c:(.text+0x14): undefined reference to `wclear‘
curses1.c:(.text+0x1b): undefined reference to `stdscr‘
curses1.c:(.text+0x2d): undefined reference to `wmove‘
curses1.c:(.text+0x34): undefined reference to `stdscr‘
curses1.c:(.text+0x46): undefined reference to `waddnstr‘
curses1.c:(.text+0x4c): undefined reference to `LINES‘
curses1.c:(.text+0x56): undefined reference to `stdscr‘
curses1.c:(.text+0x65): undefined reference to `wmove‘
curses1.c:(.text+0x6c): undefined reference to `stdscr‘
curses1.c:(.text+0x74): undefined reference to `wrefresh‘
curses1.c:(.text+0x7b): undefined reference to `stdscr‘
curses1.c:(.text+0x83): undefined reference to `wgetch‘
curses1.c:(.text+0x88): undefined reference to `endwin‘
collect2: ld returned 1 exit status

解决办法是在编译时加上参数-lncurses

 gcc -o curses1 curses1.c -lncurses


本文出自 “划舞鱼” 博客,请务必保留此出处http://ty1992.blog.51cto.com/7098269/1684265

linux屏幕编程:curses库的使用

标签:curses库   屏幕编程   curses.h   

原文地址:http://ty1992.blog.51cto.com/7098269/1684265

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!