为了实现一个简单的聊天程序,如果使用普通的输入输出函数,会很凌乱。so,便想着能不能用下
ncurses这个字符图形库
总结一下,就是这样。
使用ncurses时,先需要初始化窗口,程序结束时,主动调用endwin结束窗口。
initscr();
endwin();
输出函数
#include <curses.h>
int printw(const char *fmt, ...);
int wprintw(WINDOW *win, const char *fmt, ...);
int mvprintw(int y, int x, const char *fmt, ...);
int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...);
int vwprintw(WINDOW *win, const char *fmt, va_list varglist);
int vw_printw(WINDOW *win, const char *fmt, va_list varglist);
printw 在默认的坐标输出
wprintw 指定窗口,在默认的坐标输出
mvprintw 指定坐标,输出
mvwprintw 指定窗口,指定坐标输出
vmprintw 和 vm_printw 比较不常用,搜索无果。。
输入函数
#include <curses.h>
int scanw(char *fmt, ...);
int wscanw(WINDOW *win, char *fmt, ...);
int mvscanw(int y, int x, char *fmt, ...);
int mvwscanw(WINDOW *win, int y, int x, char *fmt, ...);
int vw_scanw(WINDOW *win, char *fmt, va_list varglist);
int vwscanw(WINDOW *win, char *fmt, va_list varglist);
scanw 在默认的坐标输入
wscanw 指定窗口的默认坐标输入
mvscanw 在指定的坐标输入
mvwscanw 在指定的窗口和指定的坐标输入
上面的函数,和scanf差不多,在输入字符串,遇到空格就听,如果需要输入空格,就需要使用下面的函数。
#include <curses.h>
int getstr(char *str);
int getnstr(char *str, int n);
int wgetstr(WINDOW *win, char *str);
int wgetnstr(WINDOW *win, char *str, int n);
int mvgetstr(int y, int x, char *str);
int mvwgetstr(WINDOW *win, int y, int x, char *str);
int mvgetnstr(int y, int x, char *str, int n);
int mvwgetnstr(WINDOW *, int y, int x, char *str, int n);
上面的函数用于输入字符串。
创建窗口
WINDOW *newwin(int nlines, int ncols, int begin_y, int begin_x);
newwin() nlines和ncol分别为行数和列树,begin_y和begin_x分别为纵坐标和横坐标。
这里的坐标指的是左上角的坐标。
刷新窗口和刷新页面
wrefresh(WINDOW *win);
refresh();
获取坐标的宏
getmaxyx(WINDOW *win, y, x);
getmaxyx 得到指定窗口的长度和高度,默认的窗口是stdscr。