gpt4 book ai didi

c - Gnome 终端无法使用curses 在程序中打印红色

转载 作者:行者123 更新时间:2023-11-30 18:15:23 24 4
gpt4 key购买 nike

我正在尝试进入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 as red)根本不会打印。看起来 Gnome 终端只是跳过了这一行。我该如何解决这个问题?

最佳答案

这是 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();
}

注释

  • 您需要在 initscr() 之后调用 start_color() 才能使用颜色。
  • 您必须使用COLOR_PAIR
  • 将分配有 init_pair 的颜色对传递给 attron 等人。
  • 您不能使用颜色对 0。
  • 您只需调用 refresh() 一次,
  • 并且仅当您希望此时看到您的输出时,
  • 并且您没有调用像 getch() 这样的输入函数。

关于c - Gnome 终端无法使用curses 在程序中打印红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com