LINUX C语言 printf 输出颜色 属性控制 打印带颜色字体(简单易理解)printf带0X前缀输出控制

本文介绍了一种在控制台中使用不同颜色输出文本的方法,并提供了详细的C语言代码示例。通过定义宏来改变文本的颜色、背景色及输出属性,使得控制台输出更加直观和美观。

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

很早之前有用过一次颜色控制,查阅资料摸索半天  最近用到又忘记怎么用了 所以调试了半天就直接写一个可随时复制使用的吧

这是效果图

通用代码

/*************************************************************************                              
    > File Name: color.c
    > Author: TANG
    > Mail: tjcmail@126.com 
    > Created Time: 2018年05月16日 星期三 10时13分58秒
 ************************************************************************/

/*设置输出前景色*/
#define PRINT_FONT_BLA  printf("\033[30m"); //黑色
#define PRINT_FONT_RED  printf("\033[31m"); //红色
#define PRINT_FONT_GRE  printf("\033[32m"); //绿色
#define PRINT_FONT_YEL  printf("\033[33m"); //黄色
#define PRINT_FONT_BLU  printf("\033[34m"); //蓝色
#define PRINT_FONT_PUR  printf("\033[35m"); //紫色
#define PRINT_FONT_CYA  printf("\033[36m"); //青色
#define PRINT_FONT_WHI  printf("\033[37m"); //白色
/*设置输出背景色*/ 
#define PRINT_BACK_BLA  printf("\033[40m"); //黑色
#define PRINT_BACK_RED  printf("\033[41m"); //红色
#define PRINT_BACK_GRE  printf("\033[42m"); //绿色
#define PRINT_BACK_YEL  printf("\033[43m"); //黄色
#define PRINT_BACK_BLU  printf("\033[44m"); //蓝色
#define PRINT_BACK_PUR  printf("\033[45m"); //紫色
#define PRINT_BACK_CYA  printf("\033[46m"); //青色
#define PRINT_BACK_WHI  printf("\033[47m"); //白色
/*输出属性设置*/
#define PRINT_ATTR_REC  printf("\033[0m");  //重新设置属性到缺省设置 
#define PRINT_ATTR_BOL  printf("\033[1m");  //设置粗体 
#define PRINT_ATTR_LIG  printf("\033[2m");  //设置一半亮度(模拟彩色显示器的颜色) 
#define PRINT_ATTR_LIN  printf("\033[4m");  //设置下划线(模拟彩色显示器的颜色) 
#define PRINT_ATTR_GLI  printf("\033[5m");  //设置闪烁 
#define PRINT_ATTR_REV  printf("\033[7m");  //设置反向图象 
#define PRINT_ATTR_THI  printf("\033[22m"); //设置一般密度 
#define PRINT_ATTR_ULIN  printf("\033[24m");//关闭下划线 
#define PRINT_ATTR_UGLI  printf("\033[25m");//关闭闪烁 
#define PRINT_ATTR_UREV  printf("\033[27m");//关闭反向图象

#include <stdio.h>
int main()
{
    PRINT_FONT_BLA  
    printf("hello world!\n");
    
    PRINT_FONT_BLU
    printf("hello world!\n");
    
    PRINT_FONT_RED 
    printf("hello world!\n");
    
    PRINT_FONT_YEL 
    printf("hello world!\n");                                                                           

    
    PRINT_FONT_GRE 
    printf("hello world!\n");
    
    PRINT_FONT_WHI 
    printf("hello world!\n");
    
    PRINT_FONT_PUR 
    printf("hello world!\n");
    
    PRINT_ATTR_REV
    printf("hello world!\n");
    
    PRINT_ATTR_REC
    return 0;
}  

printf十六进制输出

    printf("%#X",sum);//'#'意义:在数字前边加上'0X'

printf八进制输出

    printf("%o\n",sum);

<think>好的,用户的问题是关于如何在C语言中使用printf函数输出0X前缀的十六进制数值。我需要先回顾一下相关的知识,并结合提供的引用内容来整理答案。 首先,用户提到的引用中,引用[2]和引用[4]都提到了在C语言中使用%#x或%#X来输出0x前缀的十六进制数。例如,printf("%#x", a)输出类似0x1a3这样的格式,其中前缀是小写的x。而如果使用%#X,则前缀中的x会变成大写,数值中的字母也是大写,比如0X1A3。 接下来,我需要确认如何正确使用这些格式说明符。根据引用[4],当在转换说明符中加入#号时,八进制会显示0前缀,十六进制会显示0x或0X前缀,具体取决于使用的是%#x还是%#X。例如,printf("%#o", a)显示八进制的0前缀,而printf("%#x", a)显示小写的0x前缀printf("%#X", a)显示大写的0X前缀。 然后,我需要检查示例代码是否正确。引用[5]中的代码示例展示了如何同时使用%#o、%#x和%#X,并输出不同格式的结果。比如,使用%#X时,十六进制的前缀是大写的0X,并且数值中的字母也是大写的,如0X64。 此外,用户提供的引用[3]也提到,十六进制数以0x或0X开头,输出时可以通过%#x或%#X来显示前缀。需要注意的是,这里的x不区分大小写,但转换说明符中的x/X会影响输出前缀和数值字母的大小写。 现在,我需要将上述信息整理成一个清晰的步骤说明,并给出示例代码,确保用户能够理解如何正确使用printf函数来输出0X前缀的十六进制数值。同时,要指出大小写转换说明符的区别,以及#号的作用。 最后,生成相关问题,这些问题应该围绕如何控制前缀的大小写、其他进制的输出方法以及格式说明符的其他用法展开,帮助用户进一步扩展知识。</think>在C语言中,使用`printf`函数输出有`0X`前缀的十六进制数值时,可以通过以下步骤实现: ### 1. 格式说明符的选择 - **基础格式**:十六进制默认使用`%x`(小写字母)或`%X`(大写字母)输出。 - **添加前缀**:在格式说明符前添加`#`符号(即`%#x`或`%#X`),可强制显示十六进制前缀`0x`或`0X`[^4][^5]。 ### 2. 大小写控制 - `%#x`:输出小写前缀`0x`和十六进制字母(如`0x1a3`)。 - `%#X`:输出大写前缀`0X`和十六进制字母(如`0X1A3`)[^4][^5]。 ### 3. 示例代码 ```c #include <stdio.h> int main() { int a = 255; printf("默认格式: %x\n", a); // 输出 ff(无前缀printf("小写前缀: %#x\n", a); // 输出 0xff printf("大写前缀: %#X\n", a); // 输出 0XFF return 0; } ``` ### 4. 关键注意事项 - **兼容性**:`#`符号仅对八进制(`%#o`)和十六进制(`%#x`/`%#X`)有效,对十进制(`%d`)无效。 - **对齐与填充**:可结合宽度和填充符号(如`%#10X`)控制输出格式,但需注意前缀占用字符数。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值