linux C语言 curses的问题

来源:互联网 发布:apache 文件服务器 编辑:程序博客网 时间:2024/06/11 17:42

http://zhidao.baidu.com/link?url=3EqZSXCVQFL4CW7E4pMe4qlR7Ha5uWmkOKw_Pe2D4asVxPBS0TjYg0t6IwaJ7KekOA0zDvZErjRTxMKovWutna

#include<stdio.h>#include<curses.h>int main(){start_color();init_pair(1, COLOR_BLUE, COLOR_GREEN);attron(COLOR_PAIR(1));printf("good night");attroff(COLOR_PAIR(1));return  0;}请问这样写输出不了有色字符 为什么能详细和我说下 要吧printf()里面的东西变成有色的显示在物理屏幕上 怎么操作
------------------------------

要用curses库,程序开始的时候要加initscr()来初始化屏幕,退出程序前要加endwin()来结束。#include<stdio.h>#include<curses.h>int main(){iniscr();  /*这里要初始化*/start_color();init_pair(1, COLOR_BLUE, COLOR_GREEN);attron(COLOR_PAIR(1));/*printf("good night");*/addstr("good night"); /*printf改为addstr*/attroff(COLOR_PAIR(1));endwin(); /*结束前要调用endwin*/return  0;}
追问
没用啊 连good night都输出不了了
回答

endwin之前加个getch(); 


attroff(COLOR_PAIR(1));

getch();  //这里加个getch来暂停一下

endwin(); /*结束前要调用endwin*/


这是我的运行结果:

追问
那我要 printf( “%d”, a ); 把这个执行结果给输出来怎么弄 就是单单的吧执行结果输出彩色文字
回答

printf本来就只是往标准输出里送出这个a,与终端无关

如果你非要用printf,那你就不能用curses

需要看你使用的终端是什么类型,使用终端提供的控制参数也能实现

如果是vt100的话,控制命令如下

/33[30m -- /33[37m 设置前景色 

/33[40m -- /33[47m 设置背景色 

  背景颜色范围:40----49 

  40:黑 

  41:深红 

  42:绿 

  43:黄色 

  44:蓝色 

  45:紫色 

  46:深绿 

  47:白色 

  前景字符颜色:30-----------39 

  30:黑 

  31:红 

  32:绿 

  33:黄 

  34:蓝色 

  35:紫色 

  36:深绿 

  37:白色 

比如你要输出  蓝色的字,绿色的背景,那就

printf("\033[34;42m");  //设置前景为蓝色 设置背景为绿色

printf("hello world!"); //输出

printf("\033[0m"); //关闭颜色控制


0 0
原创粉丝点击