在C语言中,system("color") 是一个通过调用操作系统命令来改变控制台(命令提示符/终端)文本和背景颜色的方法,它仅适用于 Windows 系统,因为它依赖于 cmd.exe 的 color 命令。

(图片来源网络,侵删)
基本语法
system("color [背景色][文本色]");
[背景色]和[文本色]:必须是以下单字符代码之一(不区分大小写)。
| 颜色 | 代码 | 示例 |
|---|---|---|
| 黑色 | 0 | color 0F(黑底白字) |
| 蓝色 | 1 | color 1F(蓝底白字) |
| 绿色 | 2 | color 2F(绿底白字) |
| 青色 | 3 | color 3F(青底白字) |
| 红色 | 4 | color 4F(红底白字) |
| 紫色 | 5 | color 5F(紫底白字) |
| 黄色 | 6 | color 6F(黄底白字) |
| 白色 | 7 | color 7F(白底黑字) |
| 灰色 | 8 | color 8F(灰底黑字) |
| 亮蓝 | 9 | color 9F(亮蓝底黑字) |
| 亮绿 | A | color AF(亮绿底黑字) |
| 亮青 | B | color BF(亮青底黑字) |
| 亮红 | C | color CF(亮红底黑字) |
| 亮紫 | D | color DF(亮紫底黑字) |
| 亮黄 | E | color EF(亮黄底黑字) |
| 亮白 | F | color FF(亮白底黑字) |
示例代码
#include <stdio.h>
#include <stdlib.h>
int main() {
// 设置控制台为蓝底白字
system("color 1F");
printf("这是蓝底白字的文本!\n");
// 等待用户按键后恢复默认(黑底白字)
getchar();
system("color"); // 不带参数恢复默认颜色
printf("这是默认颜色的文本,\n");
return 0;
}
注意事项
- 仅限Windows:在Linux/macOS上,
system("color")不会生效,需使用其他方法(如ANSI转义码)。 - 安全性问题:
system()会调用命令行,可能存在安全风险(如恶意命令注入),仅在受信任的环境中使用。 - 依赖外部进程:
system()会启动新的进程(cmd.exe),可能影响性能。 - 恢复默认颜色:直接调用
system("color")(不带参数)会恢复默认颜色。
替代方案(跨平台)
如果需要跨平台支持,可以使用以下方法:
Windows API(仅Windows)
#include <windows.h>
void setConsoleColor(int bgColor, int textColor) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, (bgColor << 4) | textColor);
}
int main() {
setConsoleColor(1, 15); // 蓝底(1)亮白字(15)
printf("这是蓝底亮白字的文本!\n");
return 0;
}
ANSI转义码(Linux/macOS/现代Windows终端)
#include <stdio.h>
void setColor(int bgColor, int textColor) {
printf("\033[%d;%dm", bgColor, textColor);
}
int main() {
setColor(44, 37); // 蓝底(44)白字(37)
printf("这是蓝底白字的文本!\n");
setColor(0, 0); // 重置颜色
return 0;
}
- 快速简单:
system("color")适合Windows下的临时颜色修改。 - 跨平台需求:优先使用ANSI转义码或平台特定API(如Windows的
SetConsoleTextAttribute)。 - 安全性:避免在用户输入直接拼接
system()命令。

(图片来源网络,侵删)
