curses库常用函数:
注意编译时要用这样的格式:gcc xxx.c -l curses -o xxx
第一个小例子:
include <stdio.h> #include <curses.h> int main() { initscr(); clear(); move(10,20); addstr("Hello, world"); move(LINES-1, 0); refresh(); getch(); endwin(); return 0; }运行效果如下:
第二个小例子:
#include <stdio.h> #include <curses.h> int main() { int i; initscr(); clear(); for (i = 0; i < LINES; i++) { move(i, i+1); if (i%2 == 1) standout(); //反白显示 addstr("Hello, world"); if (i%2 == 1) standend(); //关闭反白显示 } refresh(); getch(); endwin(); return 0; }运行效果:
第三个小例子:
#include <stdio.h> #include <curses.h> int main() { int i; initscr(); clear(); for (i = 0; i < LINES; i++) { move(i, i+1); if (i%2 == 1) standout(); addstr("Hello, world"); if (i%2 == 1) standend(); refresh(); sleep(1); move(i, i+1); //move back addstr(" "); //erase the line appear before } endwin(); return 0; }运行效果:字符串沿着对角线一行一下行的向下移动
第四个小例子:
#include <stdio.h> #include <curses.h> #define LEFTEDGE 10 /* 左边界 */ #define RIGHTEDGE 30 /* 右边界 */ #define ROW 10 int main() { char *message = "Hello"; char *blank = " "; int dir = 1; int pos = LEFTEDGE; initscr(); clear(); while (1) { move(ROW, pos); addstr(message); /* draw string */ // move(LINES-1, COLS-1); refresh(); /* show string */ sleep(1); move(ROW, pos); /* move back */ addstr(blank); /* erase string */ pos += dir; /* advance position */ if (pos >= RIGHTEDGE) /* check for bounce */ dir = -1; if (pos <= LEFTEDGE) dir = 1; } return 0; }运行效果:在(ROW,LEFTEDGE)----(ROW,RIGHTEDGE)间来回移动字符串