Linux代码设置终端输出文字颜色
Linux下终端文字颜色是通过添加专用数字来选择的。这些数字夹在 "\e["
和 "m"
之间。如果指定一个以上的数字,则用分号将它们分开。
示例代码
1、编写term.c
源码
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("\n");
//1.设置前景颜色【红色】
printf("\e[31m 只设置前景颜色【红色】! \e[0m \n");
//2.第一个数字(31)为前景颜色【红色】,第二个数字为(42)背景颜色【绿色】
printf("\e[31;42m 设置前景颜色为【红色】,背景颜色为【绿色】! \e[0m \n");
//3.使用"\e[0m"序列将颜色重新设置为正常值
printf("\e[34m 设置前景颜色【蓝色】,\e[33m 设置前景颜色【黄色】,\e[0m 恢复正常颜色! \n\n");
return 0;
}
2、编译源码
编译
gcc -o color_term term.c
设置可执行权限
chmod +x color_term
3、运行效果
颜色映射关系
1、前景颜色
前景颜色范围【\e[30m
– \e[37m
】
"\e[30m"
灰色"\e[31m"
红色"\e[32m"
绿色"\e[33m"
黄色"\e[34m"
蓝色"\e[35m"
紫色"\e[36m"
淡蓝色"\e[37m"
白色
2、背景颜色
背景颜色范围【\e[40m
– \e[47m
】
"\e[40m"
灰色"\e[41m"
红色"\e[42m"
绿色"\e[43m"
黄色"\e[44m"
蓝色"\e[45m"
紫色"\e[46m"
淡蓝色"\e[47m"
白色
3、恢复颜色
使用"\e[0m"
序列将颜色重新设置为正常值。
Windows代码设置控制台输出文字颜色
Windows下控制台颜色是通过 SetConsoleTextAttribute()
函数完成的。SetConsoleTextAttribute()
函数的原型如下:
BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
其中2个参数的含义如下所示:
- hConsoleOutput:指向控制台的句柄。
- wAttributes:文本属性。
hConsoleOutput可以选择以下3种句柄:
STD_INPUT_HANDLE
: 标准输入的句柄STD_OUTPUT_HANDLE
: 标准输出的句柄STD_ERROR_HANDLE
: 标准错误的句柄
wAttributes可以控制前景色和背景色:
FOREGROUND_BLUE
: 字体颜色:蓝FOREGROUND_GREEN
: 字体颜色:绿FOREGROUND_RED
: 字体颜色:红FOREGROUND_INTENSITY
: 前景色高亮显示BACKGROUND_BLUE
: 背景颜色:蓝BACKGROUND_GREEN
: 背景颜色:绿BACKGROUND_RED
: 背景颜色:红BACKGROUND_INTENSITY
: 背景色高亮显示
示例代码
1、编写测试代码
#include <stdio.h>
#include <windows.h>
int main()
{
//1. 设置前景颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
printf("设置前景颜色【红色】!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
printf("设置前景颜色【绿色】!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
printf("设置前景颜色【蓝色】!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
printf("设置前景颜色【red+green=yellow】!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE);
printf("设置前景颜色【red+blue=purple】!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
printf("设置前景颜色【green+blue=cyan】!\n");
printf("\n");
//2. 设置背景颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE);
printf("设置背景颜色【蓝色】!\n");
//3. 设置前景颜色+背景颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | BACKGROUND_GREEN);
printf("设置前景颜色【红色】,设置背景颜色【绿色】!\n\n");
getchar();
return 0;
}