Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 使用init_color()定义颜色值时遇到问题;在c语言的课程中_Colors_Ncurses_Cs50_Cc - Fatal编程技术网

Colors 使用init_color()定义颜色值时遇到问题;在c语言的课程中

Colors 使用init_color()定义颜色值时遇到问题;在c语言的课程中,colors,ncurses,cs50,cc,Colors,Ncurses,Cs50,Cc,我正在使用init_color()在C中的ncurses中尝试定义新的RGB颜色值。但是,init_color()在运行程序后不会生效并更改默认颜色 我尝试过在init_color()中移动语句语句和开始颜色()但是没有运气。我还尝试使用不同的值(ASCII和其他来源的数字)来代替例如COLOR\u-MAGENTA,作为init\u-COLOR()中的第一个参数语句,但也没有运气。我的start_color(),init_color()和init_pair()语句在程序的其余部分之前都在主函数中

我正在使用
init_color()在C中的ncurses中尝试定义新的RGB颜色值。但是,
init_color()在运行程序后不会生效并更改默认颜色

我尝试过在
init_color()中移动init_pair()前后的code>语句语句和
开始颜色()但是没有运气。我还尝试使用不同的值(ASCII和其他来源的数字)来代替例如
COLOR\u-MAGENTA
,作为
init\u-COLOR()中的第一个参数语句,但也没有运气。我的
start_color()
init_color()
init_pair()语句在程序的其余部分之前都在主函数中。我的终端(使用cloud9/cs50)支持256色(使用终端命令检查)。此外,所有颜色定义都在函数“main”上方

int main(int argc, char *argv[])
{
    // ensure that number of arguments is as expected
    if (argc != 1)
    {
      fprintf(stderr, "Usage: ./lemonade\n");
      return 1;
    }

// start up ncurses
if (!startup())
{
    fprintf(stderr, "Error starting up ncurses\n");
    return 2;
}

// initialize colors
start_color();

// re-asign specific RGB value to colors
init_color(COLOR_MAGENTA, 254, 160, 207);
init_color(COLOR_GREEN, 37, 244, 82);
init_color(COLOR_BLUE, 96, 82, 186);

// used cyan for a different greeen
init_color(COLOR_CYAN, 46, 243, 74);

// used yellow for a grey
init_color(COLOR_YELLOW, 156, 156, 156);

// used red for a purple
init_color(COLOR_RED, 208, 196, 253);

// initilaize color pairs
init_pair(LOGO_PAIR, COLOR_MAGENTA, COLOR_GREEN);
init_pair(DRAWBORDERSSPECIAL_PAIR, COLOR_BLACK, COLOR_GREEN);
init_pair(BORDERS_PAIR, COLOR_WHITE, COLOR_BLACK);
init_pair(SPECIALNEXT_PAIR, COLOR_BLACK, COLOR_GREEN);
init_pair(SUNNYBLUE_PAIR, COLOR_WHITE, COLOR_BLUE);
init_pair(WEATHERGREEN_PAIR, COLOR_WHITE, COLOR_CYAN);
init_pair(CLOUDYGREY_PAIR, COLOR_WHITE, COLOR_YELLOW);
init_pair(HOTPURPLE_PAIR, COLOR_WHITE, COLOR_RED);

// clean
clean();            // clean includes (refresh(); and clear();)

// draw borders
drawborders();

// run screen 1
screenone();





// support color test                           
mvprintw(6, 50, "My terminal supports %d colors.", COLORS);

// has_color(); test    
if (has_colors() == FALSE)
{
    mvprintw(7, 50, "Your terminal does not support color \n");
}

// can_change_color(); test     
if (can_change_color() == FALSE)
{
    mvprintw(8, 50, "Can_change_color is false \n");
}
我期望
init_color()语句生效,并将默认颜色(例如洋红、黑色等)更改为新指定的特定RGB值,但程序运行后它们保持不变


我在支持的颜色数量中添加了检查,
has_colors(),和
可以改变颜色()。支持的颜色数返回8,
has_colors()
返回true,最后
可以改变颜色()返回false。感谢您建议使用
has_colors()
可以改变颜色()
虽然这似乎是个问题,但我不确定从这里走到哪里?

嗯,我看不到您对
has\u colors()
can\u change\u color()
的调用,这应该用来检测您的系统是否允许这样做


这是你应该检查的第一件事。可能是您的环境中不允许更改颜色。

当前的
可能会重复can_change_color()
返回true,``has_color()<代码>。我使用终端命令“echo$TERM”并收到“xterm-256color”。我还使用了“tput颜色”,收到了“256”。我不知道为什么会出现
init_color();`即使终端支持256色,语句也不会生效?