我正试图进入 ncurses 库。我很失望,Gnome终端可以通过ANSI转义字符打印红色,但不能打印 ncurses 中的预定义红色。
#include <curses.h>
void init_colors() {
int a;
for(a = 1; a < COLORS; a++) {
init_pair(a, a, COLOR_BLACK);
}
}
void print_colors() {
int a;
for(a = 1; a < COLORS; a++) {
attron(COLOR_PAIR(a));
mvprintw(a, 0, "color");
attroff(COLOR_PAIR(a));
}
}
int main() {
initscr();
cbreak();
noecho();
curs_set(0);
if(has_colors())
start_color();
init_colors();
print_colors();
getch();
endwin();
return 0;
}
这应该以任何默认的 ncurses 颜色打印“ color ”一词,但第二行(init_pair
应该初始化第二行COLOR_PAIR
因为red
)根本没有印刷。似乎Gnome Terminal只是跳过这一行。我该如何解决这个问题?
答案 0 :(得分:-2)
这是another stackoverflow answer
的副本#include <curses.h>
int main(void) {
initscr();
start_color();
init_pair(1, COLOR_BLACK, COLOR_RED);
init_pair(2, COLOR_BLACK, COLOR_GREEN);
attron(COLOR_PAIR(1));
printw("This should be printed in black with a red background!\n");
attron(COLOR_PAIR(2));
printw("And this in a green background!\n");
refresh();
getch();
endwin();
}
start_color()
之后致电initscr()
以使用颜色。COLOR_PAIR
宏init_pair
的颜色对传递给attron
等refresh()
一次,getch()
等输入函数。