printf 改变输出颜色

本文介绍如何在终端使用printf函数改变输出文字的颜色,通过转义序列实现不同颜色和显示效果的组合,便于程序调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

printf在终端输出时改变颜色

 

 

在调试程序时,有时候要输出大量数据,如果让printf/fprintf改变输出数据的颜色,那观察数据就方便多了。

 

终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。

转义序列是以 ESC 开头,可以用 /033 完成相同的工作(ESC ASCII 码用十进制表示就是 27 = 用八进制表示的 33)。

 

/033[显示方式;前景色;背景色m

 

显示方式:0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)

前景色:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)

背景色:40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色)

 

/033[0m 默认

/033[1;32;40m 绿色

033[1;31;40m 红色

 

printf( "/033[1;31;40m 输出红色字符 /033[0m" )

在调试程序时,有时候要输出大量数据,如果颜色都一样的话,辨别起来就很恼火,
如果让printf/fprintf改变输出数据的颜色,那观察数据就方便多了。

示例代码:

#include <stdio.h>
#define NONE         "/033[m"
#define RED          "/033[0;32;31m"
#define LIGHT_RED    "/033[1;31m"
#define GREEN        "/033[0;32;32m"
#define LIGHT_GREEN  "/033[1;32m"
#define BLUE         "/033[0;32;34m"
#define LIGHT_BLUE   "/033[1;34m"
#define DARY_GRAY    "/033[1;30m"
#define CYAN         "/033[0;36m"
#define LIGHT_CYAN   "/033[1;36m"
#define PURPLE       "/033[0;35m"
#define LIGHT_PURPLE "/033[1;35m"
#define BROWN        "/033[0;33m"
#define YELLOW       "/033[1;33m"
#define LIGHT_GRAY   "/033[0;37m"
#define WHITE        "/033[1;37m"

int main()
{
    printf( CYAN "current function is %s " GREEN " file line is %d/n" NONE,
            __FUNCTION__, __LINE__ );

    fprintf(stderr, RED "current function is %s " BLUE " file line is %d/n" NONE,
            __FUNCTION__, __LINE__ );
    return 0;
}


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/dedodong/archive/2007/07/02/1675528.aspx

### C语言 `printf` 修改输出文本大小和颜色方法 #### 使用 ANSI 转义序列修改文本颜色 在 Linux 或 Mac 终端中,可以通过发送特定的 ANSI 控制序列来改变终端上打印的文字颜色。这些控制序列允许设置前景色(文字颜色)、背景色以及一些显示属性如加粗或下划线。 对于文字颜色,在调用 `printf` 函数时可以嵌入如下格式的字符串: ```c "\033[<attr>m" ``` 其中 `<attr>` 是由多个参数组成的列表,各参数之间用分号隔开;最后一个 'm' 表示结束标记。例如,要将文本设为红色,可以用 `\033[31m`[^4]。 下面是几个常用的色彩代码及其含义: | 属性 | 值 | | --- | --- | | 黑色 | 30 | | 红色 | 31 | | 绿色 | 32 | | 黄色 | 33 | | 蓝色 | 34 | | 紫色 | 35 | | 青色 | 36 | | 白色 | 37 | 为了恢复默认样式,可以在适当位置加入重置命令 `\033[0m` 来清除之前所有的格式化效果[^5]。 #### 示例代码展示不同颜色输出 这里给出一段简单的例子,演示如何利用上述提到的技术实现彩色输出: ```c #include <stdio.h> int main() { // 打印红字黑底的信息 printf("\033[31m这是红色字体\033[0m\n"); // 更改背景色的例子 (使用大于等于10的数值作为背景色) printf("\033[44;37m白色文字蓝色背景\033[0m\n"); return 0; } ``` 需要注意的是,这种方法仅适用于支持 ANSI 转义序列的环境,比如大多数现代 Unix/Linux 和 macOS 终端模拟器。而在 Windows 平台上,默认情况下可能不完全兼容此特性,除非启用了相应的功能或是通过第三方工具提供支持。 关于调整文本的实际尺寸,这并不是直接由 `printf` 自身完成的功能,因为标准 C 库并没有内置机制去影响屏幕上的物理呈现形式——即无法单纯依靠 `printf` 来增大缩小字体本身。不过,如果是在图形界面应用程序内工作,则可以根据具体框架提供的 API 进行相应处理;而对于纯文本模式下的终端应用来说,一般只能借助外部库或者操作系统特有的接口来进行更复杂的渲染操作[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值