C语言中,如何更改输出的文字中一部分的颜色?

比如,输出一个蓝色的hello,一个黄色的world

可通过以下两种方法解决:

方法1. 用windows api. 如下代码输出123(高亮绿色前景白色背景)456(高亮黄色前景白色背景)在同一行。


#include <stdio.h>


#include <windows.h>   


int main(){


HANDLE  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);


SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | BACKGROUND_INTENSITY| FOREGROUND_GREEN |BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("123");


SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY| BACKGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | 

BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);


printf("456");


getchar();


return 0;


}


这里FOREGROUND_GREEN可以换成1-255的数字,表示不同配色。



方法2, 使用ansi颜色码。


两步:


I. 修改c:\windows\system32\CONFIG.NT文件,在最后添加一行:


device=%SystemRoot%\system32\ansi.sys


II. 然后c程序里用ansi颜色码,控制输出。 例如,输出一个绿色的123和一个黄色的456:


printf("\033[32m123\033[33m456\n");

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-04
方法1. 用windows api. 如下代码输出123(高亮绿色前景白色背景)456(高亮黄色前景白色背景)在同一行。
#include <stdio.h>
#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | BACKGROUND_INTENSITY| FOREGROUND_GREEN |BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("123");
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY| BACKGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("456");
getchar();
return 0;
}
这里FOREGROUND_GREEN可以换成1-255的数字,表示不同配色。

方法2, 使用ansi颜色码。
两步:
I. 修改c:\windows\system32\CONFIG.NT文件,在最后添加一行:
device=%SystemRoot%\system32\ansi.sys
II. 然后c程序里用ansi颜色码,控制输出。 例如,输出一个绿色的123和一个黄色的456:
printf("\033[32m123\033[33m456\n");
第2个回答  2012-08-23
你如果用TC的话,可以通过类似下面的例子来实现彩色输出文字
#include<conio.h>
main()
{
textcolor(RED);
cprintf("this is adsjskldfjlsd");
textcolor(GREEN);
cprintf("this is adsjskldfjlsd");
}
第3个回答  推荐于2017-09-01
呃,至少windows的命令行下面是没有颜色的,shell里面颜色的配置也是预先配置好的。
如果你要这样干的话,那就要学C语言的图形编程,常用C的图形库有OpenGL,SDL什么的,turbo c 上倒是有一个graphics 可以在命令行那儿画园划线什么的,不过那个已经是DOS时代的事了,现在没什么人用了追问

呃...OGL倒是会用,不过我想要一个命令行的效果=w=...所以真的没办法了么...?貌似TC里的textcolor+cprintf可以用,但是TC的编译器总是让人莫名其妙...貌似标准不一样?

追答

那我就不清楚了,话说你在命令行下写颜色字是准备干嘛呢?

追问

想做个命令行下的游戏【←纯属是我闲的蛋疼...
目前找到方法了,用的Windows的API,谢了

本回答被提问者和网友采纳
第4个回答  2012-08-22
除非自编程序。追问

追答

使用TC2.0编程。

相似回答