ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【C语言】输出带颜色的打印

2021-08-06 00:01:34  阅读:480  来源: 互联网

标签:STD 输出 HANDLE FOREGROUND 打印 echo SetConsoleTextAttribute printf C语言


一、Linux下控制台文字上色的方法

Linux下控制台颜色是通过添加专用数字来选择的。这些数字夹在 "\e["和 "m"之间。如果指定一个以上的数字,则用分号将它们分开。

举几个例子:

(1)第一个数字(31)为前景颜色(红色);第二个数字为(42)背景颜色(绿色)

echo -e "\e[31;42m"

(2)使用"\e[0m"序列将颜色重新设置为正常值

echo -e "\e[0m" 或 echo -e "\033[0m"

(3)颜色对应关系如下所示:
\e[30m – \e[37m 设置前景色(字体颜色)
echo -e “\e[30m” 灰色
echo -e “\e[31m” 红色
echo -e “\e[32m” 绿色
echo -e “\e[33m” 黄色
echo -e “\e[34m” 蓝色
echo -e “\e[35m” 紫色
echo -e “\e[36m” 淡蓝色
echo -e “\e[37m” 白色

\e[40m – \e[47m 设置背景色
echo -e “\e[40m” 灰色
echo -e “\e[41m” 红色
echo -e “\e[42m” 绿色
echo -e “\e[43m” 黄色
echo -e “\e[44m” 蓝色
echo -e “\e[45m” 紫色
echo -e “\e[46m” 淡蓝色
echo -e “\e[47m” 白色

具体到编程中,printf() 颜色设置示例代码如下所示。

printf("\e[31m\e[42m Hello World. \e[0m \n"); // 红色字体,绿色背景

二、Windows下控制台文字上色的方法

Windows下控制台颜色是通过SetConsoleTextAttribute()函数完成的。SetConsoleTextAttribute()函数的原型如下所示。
BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
其中2个参数的含义如下所示:

  • hConsoleOutput:指向控制台的句柄。
  • wAttributes:文本属性。
    hConsoleOutput可以选择以下3种句柄:
  • STD_INPUT_HANDLE: 标准输入的句柄
  • STD_OUTPUT_HANDLE: 标准输出的句柄
  • STD_ERROR_HANDLE: 标准错误的句柄

wAttributes可以控制前景色和背景色:

  • FOREGROUND_BLUE: 字体颜色:蓝
  • FOREGROUND_GREEN: 字体颜色:绿
  • FOREGROUND_RED: 字体颜色:红
  • FOREGROUND_INTENSITY: 前景色高亮显示
  • BACKGROUND_BLUE: 背景颜色:蓝
  • BACKGROUND_GREEN: 背景颜色:绿
  • BACKGROUND_RED: 背景颜色:红
  • BACKGROUND_INTENSITY 背景色高亮显示
    demo如下:
#include <stdio.h>
#include <windows.h>

int main()
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
	printf("red\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
	printf("green\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
	printf("blue\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_GREEN);
	printf("red+green=yellow\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_BLUE);
	printf("red+blue=purple\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_BLUE);
	printf("green+blue=cyan\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED|BACKGROUND_GREEN);
	printf("Add background\n");
 
 
	return 0;
}

运行结果如下:
在这里插入图片描述

标签:STD,输出,HANDLE,FOREGROUND,打印,echo,SetConsoleTextAttribute,printf,C语言
来源: https://blog.csdn.net/weixin_37921201/article/details/119429932

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有