C语言system函数如何设置终端颜色?

99ANYc3cd6
预计阅读时长 8 分钟
位置: 首页 C语言 正文

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

c语言system 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;
}

注意事项

  1. 仅限Windows:在Linux/macOS上,system("color") 不会生效,需使用其他方法(如ANSI转义码)。
  2. 安全性问题system() 会调用命令行,可能存在安全风险(如恶意命令注入),仅在受信任的环境中使用。
  3. 依赖外部进程system() 会启动新的进程(cmd.exe),可能影响性能。
  4. 恢复默认颜色:直接调用 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()命令。
c语言system color
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
织梦模板手机版修改步骤是什么?
« 上一篇 01-10
dede一二级三级栏目如何调用?
下一篇 » 01-10

相关文章

取消
微信二维码
支付宝二维码

目录[+]