方法 1,使用 printf 格式化打印,该方法在 visual Studio 中生效,在 Dev C++ 中未生效
示例代码:
#include <stdio.h>
#define CLOUR_ON "\033[41;37m"
#define CLOUR_OFF "\033[0m"
int main(void)
{
printf(CLOUR_ON "%s" CLOUR_OFF "\n", "123, 456, 789");
return 0;
}
输出效果:
方法二,使用 windows.h 中的 system 函数,该方法存在缺陷,只有最后一次调用该函数生效,所有输出均会变成最后一次设置的颜色
示例代码:
#include <stdio.h>
#include <Windows.h>
int main(void)
{
system("color 0A");
printf("Hello, world!\n");
return 0;
}
输出效果:
可选参数如下:
system("color 0A");
显示颜色控制函数,设置字体(前景色)和背景颜色
0:背景色黑色
A:字体颜色绿色
颜色属性由两个十六进制数字指定(颜色常量)
第一个对应于背景色,第二个对应于前景色。
每个数字可以为以下任何值:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
方法三,使用系统封装函数,推荐该方法,可选参数同上
示例代码:
#include <stdio.h>
#include <Windows.h>
static void SetColor(const unsigned short textColor);
int main(void)
{
SetColor(4);
printf("Hello, world!\n");
SetColor(7);
return 0;
}
/* 设置字体颜色,入参为 0 - 15 */
static void SetColor(const unsigned short textColor)
{
if ((textColor >= 0) && (textColor <= 15)) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), textColor);
} else {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
}
输出效果: