找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

385

积分

0

好友

45

主题
发表于 9 小时前 | 查看: 1| 回复: 0

除了Linux环境,这项技巧在Windows的Visual Studio下也同样适用。先看下面这段示例代码:

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("\033[44;37;5m hello world\033[0m\n");
    return 0;
}

编译并运行这段代码后,你将在终端中看到彩色输出,结果如下:

C语言程序输出蓝底白字闪烁的“hello world”

可见,此时输出的文字不仅有了颜色(白色前景),还拥有了蓝色背景和闪烁效果。

其核心原理在于,在输出字符串时嵌入特定的控制序列。格式为 “\033[ ; m …… \033[0m ”。其中 \033[ 是转义序列的开始,中间的数字代码用于定义颜色和样式,m 表示设置图形模式,最后的 \033[0m 则用于重置所有属性,避免后续输出也被染色。

颜色通过数字代码来定义,具体范围如下:

字背景颜色范围:40 - 49

  • 40:黑
  • 41:深红
  • 42:绿
  • 43:黄色
  • 44:蓝色
  • 45:紫色
  • 46:深绿
  • 47:白色

字颜色(前景色)范围:30 - 39

  • 30:黑
  • 31:红
  • 32:绿
  • 33:黄
  • 34:蓝色
  • 35:紫色
  • 36:深绿
  • 37:白色

这其实是 ANSI转义序列 的一部分。除了颜色,它还能控制许多终端显示属性,下面是一些常用的ANSI控制码说明:

\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH 设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

最后,让我们通过一个综合实例来巩固理解,看看如何组合使用这些代码:

#include <stdio.h>

int main(int argc, char **argv)
{
    // 输出红色文字
    printf("\033[31m The ......\n\033[0m");
    // 尝试设置高亮、反显等属性(注意:部分属性组合可能因终端而异)
    printf("\033[2;7;1mHEOO.\n\033[2;7;0m");
    // 设置背景为深红(41),前景为深绿(36)
    printf("\033[41;36msomthe here\n\033[0m");
    return 0;
}

运行上面的程序,你会在终端中看到类似下图的输出效果,直观地展示了不同颜色和属性的组合:

C语言程序输出红字、反显文字及红底绿字效果

掌握ANSI转义序列能让你的命令行程序输出更具可读性和表现力。如果你想深入探讨更多C语言编程技巧,欢迎来 云栈社区 交流分享。




上一篇:技术总监的日常:从0到1搭建团队与研发体系
下一篇:程序员如何构建代码资产?打造第一份被动收入的实战思路
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-18 18:14 , Processed in 0.391124 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表