初识curses (简单常用的函数简介)

本文详细介绍Curses库的各种功能,包括初始化、字符与字符串操作、格式化输出、窗口管理等核心功能。此外还介绍了如何利用Curses进行屏幕刷新、清除及光标移动等常见操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


如果可以尽量看 《unix/linux下curses开发指南》这本书,更详细。

initscr()     初始化为curses 模式,用来清除屏幕上所有的字符 endwin() 退出curses 模式
refresh()  告诉curses系统将缓冲区的内容输出到屏幕上。
move (int new_y, int new_x) 把逻辑光标的位置移动到指定的地点(行、列)

addch()、addstr()系列:将字符(串)打印到屏幕上,可以附加加字符修饰参数的一类函数。
addch (const chtype char_to_add)         在光标的当前位置添加给定的字符
addstr (chtype * const string_to_add)     在光标的当前位置添加给定的字符串
mvaddch(int y,int x,chtype ch)         用于将光标移动到指定位置输出字符
waddch(WINDOW*,chtype ch)      将字符输出到指定窗口的当前坐标处
mvwaddch(WINDOW*,int, int,chtype)          将字符输出到指定窗口的指定坐标处
mvaddstr()           用于将光标移动到指定位置输出字符串
waddstr()         将字符串输出到指定窗口的当前坐标处

printw()系列:和printf()一样的具有格式化输出的一类函数。
printw(char *format,…);       和printf()类似,在光标当前位置格式化输出
mvprintw(int y,int x,char *format,…);      将光标移动到指定位置,然后格式化输出内容 wprintw(WINDOW*,char *format,…)       在指定窗口的当前坐标处,格式化输出内容
mvwprintw(WINDOW*,int y, int x,char *format,…)   在指定窗口的指定坐标处,格式化输出内容
 
  插入删除系列函数
insch(chtype char_to_insert)       在当前光标处插入字符,把现有字符后移
insertln(void)         插入一个空行,把现有的行依次往下移一行
delch(void)         删除位于当前光标处的字符
deleteln(void)         删除当前光标所指的行
beep()         使机器发出蜂鸣声
flash()    使屏幕产生闪烁 清除屏幕函数
erase(void)    在每个屏幕空白位置写上空白符 
clear(void)        清除整个屏幕,要配合refresh()使用
clrtobot(void)        清除从光标当前位置到屏幕右下角的所有内容
clrtoeol(void)       从光标当前位置删除到这一行的结尾

scanw()系列函数     scanw() 和标准io的scanf()类似,用来获取用户的输入
mvscanw()       将光标移动到指定位置,并获取用户输入
wscanw()       在指定窗口的当前坐标处,获取用户输入
mvwscanw()     在指定窗口的指定坐标处,获取用户输入 窗口机制

WINDOW *newwin(int lines,int cols, int strat_y,int start_x) 创建一个新窗口,窗口从屏幕位置(start_y,start_x)开始,尺寸由分别代表行数和列数的lines和cols参数指定
Int delwin (WINDOW *window_to_delete); 删除一个通过newwin函数创建的 窗口
int box(WINDOW *win,chtype verch,chtype horch)     在已定义的窗口外围画上边框

border(chtype ls,chtype rs,chtype ts, chtype bs,chtype tl,chtype tr,chtype bl, chtype br) 根据ls(左边框字元),rs(右边框字元),ts(上边框字元),bs(底部字元),tl(左上角),tr(右上角),bl(左下角),br(右下角)
wborder(WINDOW*,….)     参数多了一个指定的窗口,其他同上 画线函数

hline(chtype ch,int  n)    当前光标处用n个ch字元画出一条水平线
whline(WINDOW*,chtype,int)      指定窗口的当前坐标处,画出一条水平线
vline(chtype ch , int n)       当前光标处用n个ch字元画出一条垂直线
wvline(WINDOW*,chtype,int)         指定窗口的当前坐标处,用n个ch字元画出一条垂直线
mvhline(int y, int x, chtype ch,int n)     在(y,x)光标处用n个ch字元画出一条水平线
mvwhline(WINDOW*,int y, int x,chtype ch, int n) 在指定窗口(y,x)光标处用n个ch字元画出一条水平线
mvvline(int y, int x, chtype ch, int n)        当(y,x)光标处用n个ch字元画出一条垂直线
mvwvline(WINDOW*, int y, int x,chtype ch, int n)   在指定窗口(y,x)光标处用n个ch字元画出一条垂直线

刷新窗口
wrefresh(WINDOW *)    刷新指定窗口,同refresh()
  wclear(WINDOW *)    清除指定窗口的内容
werase(WINDOW*)     同 wclear()
touchwin(WINDOW *)      告诉curses,指定win发生变化,下次刷新时要刷新该窗口 scrollok(WINDOW*, bool)   控制窗口的卷屏情况
scroll(WINDOW*)    同上

int keypad (WINDOW *win_ptr,bool keypad_on)
激活keypad模式,开启转义序列与逻辑按键之间的转换功能 ctype.h中的字符函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值