探索篇 | C语言改变控制台输出内容颜色
控制台是什么
让代码『跑』起来
当代码执行的时候,会生成一个控制台命令框,把我们想要的内容打印显示。这个窗口我们称之为计算机控制台
命名行界面
cmd 命令提示符
控制台
改变控制台前景色、背景色
只需用system()函数调用一个cmd命令就行了。
函数原型: int system (const char* command);
例:
#include <stdio.h>
#include <stdlib.h> //for system()int main()
{//@color表示 设置控制台前景色和背景色,后跟参数system("@color 0a"); printf("Hello World!\n");return 0;
}
运行结果:
比如 system("color 5E"); 这个就是紫色背景,淡黄色字体
如果要让输出的每一个单词的颜色都不同(或者说输出多种颜色的字),能不能呢?
have a try:
#include <stdio.h>
#include <stdlib.h> //for system()int main()
{system("@color 0a"); //黑色背景 淡绿色文字printf("Hello World!\n");system("@color 0f"); //黑色背景 亮白色文字printf("Hello World!\n");system("@color 04"); //黑色背景 红色文字printf("Hello World!\n");return 0;
}
运行结果:
前面设定的颜色都被最后一种覆盖了,所以用system()函数不能实现输出多种颜色的文字
调用系统API设置控制台文字属性
又是一波代码强行袭来
#include <stdio.h>
#include <Windows.h>
int main()
{printf("Hello World!\n"); //此时输出的是默认属性的文字HANDLE hdl = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄SetConsoleTextAttribute(hdl, FOREGROUND_GREEN); //设置文字属性:绿色printf("Hello World!\n"); //此时输出的是绿色的文字SetConsoleTextAttribute(hdl, FOREGROUND_RED); //设置文字属性:红色printf("Hello World!\n"); //此时输出的是红色的文字SetConsoleTextAttribute(hdl, FOREGROUND_BLUE); //设置文字属性:蓝色printf("Hello World!\n"); //此时输出的是蓝色的文字SetConsoleTextAttribute(hdl, FOREGROUND_INTENSITY); //设置文字属性:高亮printf("Hello World!\n"); //此时输出的是高亮的文字SetConsoleTextAttribute(hdl, FOREGROUND_BLUE | FOREGROUND_INTENSITY); //设置文字属性:蓝色、高亮printf("Hello World!\n"); //此时输出的是亮色、加亮的文字SetConsoleTextAttribute(hdl, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); //设置文字属性:白色printf("Hello World!\n"); //此时输出的是白色的文字 也就是说这三种颜色属性可以叠加SetConsoleTextAttribute(hdl, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); //设置文字属性:白色、高亮printf("Hello World!\n"); //此时输出的是白色、加亮的文字CloseHandle(hdl); //要记得关闭Handle,释放 Handle 资源return 0;
}
运行结果:
既然有 FORE 颜色(前景色(字体的颜色)),自然也就存在 BACK 颜色(背景色)
have a try:
#include <stdio.h>
#include <Windows.h>
int main()
{printf("Hello World!\n"); //此时输出的是默认属性的文字HANDLE hdl = GetStdHandle(STD_OUTPUT_HANDLE); //获得控制台句柄SetConsoleTextAttribute(hdl, BACKGROUND_RED); //设置文字属性:控制台背景色,红色底色printf("Hello World!\n"); //此时输出红色的底色,只是文字的底色,不是控制台的背景色SetConsoleTextAttribute(hdl, FOREGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_INTENSITY);//设置文字属性:绿色,底色:白色、加亮,printf("Hello World!\n"); //此时输出红色的底色,只是文字的底色不是控制台的背景色return 0;
}
运行结果:
SetConsoleTextAttribute() 函数第二个参数可以有文字的颜色、底色以及加亮几种,颜色只有:红、绿、蓝三种,要想显示其他颜色,可以利用光的三原色进行叠加
第二个参数总共有八个宏定义:
文字本身颜色: FOREGROUND_RED、FOREGROUND_GREEN、FOREGROUND_BLUE
文字底色: BACKGROUND_RED、BACKGROUND_GREEN、BACKGROUND_BLUE
文字加亮: FOREGROUND_INTENSITY
底色加亮: BACKGROUND_INTENSITY
以上对文字属性进行设置的函数及宏:都在<Windows.h>头文件里已定义
常见问题汇总
- 为什么我们开始时用的是do-while循环:
因为,我们第一次选择play就要进到游戏中去,第一次选择退出,就直接退出去了。
- 编译出错:***函数重定义,不同的基类型
因为:函数的排列出现问题,(.c) 文件中需要注意『函数定义在前,函数使用在后』
- 其他问题
可以直接在评论区留言
感谢阅读本篇博客,如果有不错的建议或意见,欢迎在评论区留言,喜欢的话,麻烦点个赞和关注哦~~~
探索篇 | C语言改变控制台输出内容颜色相关推荐
- C 语言的控制台输出只是 “黑底白字”吗 ?
文章目录 前言 一.如何改变控制台输出的颜色? 二.单纯只设置文字颜色 总结 前言 C 语言控制台输出的只是 "黑底白字"吗 ?不!它也可以是有彩色的,原来我们可以调用 Windo ...
- CLion 控制台输出内容乱码问题的解决方法
CLion 控制台输出内容乱码问题的解决方法 参考文章: (1)CLion 控制台输出内容乱码问题的解决方法 (2)https://www.cnblogs.com/flydangerfox/p/100 ...
- C/C++改变控制台的字体颜色
当你接触编程的时候,是不是总是有这种感受:白字黑色的控制台总是很枯燥,正如你用大脑运行这段代码 #include <stdio.h> #include <conio.h> in ...
- IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
IntelliJ IDEA 自定义控制台输出多颜色格式功能 1. 打开IDEA设置面板 2. 点击插件(Plugins)安装Grep Console 3. 重启IDEA后设置颜色 4. 效果图 5. ...
- idea 未实现接口红线提示,重复代码波浪线提示,自动换行,控制台输出内容自动换行...
01,Could not autowire. No beans of 'UserMapper' type found 01.1,问题描述,通过反射动态实现的接口在调用时会出现以上提示,常见的如 ORM ...
- 第56篇 QML 之 JS控制台输出、注释语句、标识符、字面量与变量
目录 1.控制台输出 QML 组件 2.注释语句 3.JS 标识符 标识符
- 通过控制台输出各种颜色的字符——ANSIConsole、JANSI
默认的jdk控制台只能跟随系统而定,在eclipse中可以定义各种来源的输出颜色,但是如果你想按照的app输出内容到控制台,只能按照前两者来定,而且默认只有黑和err的红,有时候开发中输出的日志信息较 ...
- 在浏览器控制台输出内容 console.log(string);
在浏览器控制台中写如数据 1添加 <script type="text/javascript">djConfig = { isDebug: true };< ...
- c语言改变doss窗口的颜色,C语言第三次模拟练习题部分解答
<C语言第三次模拟练习题部分解答>由会员分享,可在线阅读,更多相关<C语言第三次模拟练习题部分解答(20页珍藏版)>请在装配图网上搜索. 1.单项选择1. 题号:13334若有 ...
最新文章
- 我看过的编译原理方面的好文章
- OpenCV Cut Image via ROI 根据兴趣区域剪裁图片
- 华为云mysql端口号_华为云云耀服务器远程连接mysql,报错10038端口配置问题。
- WCF使用Json传输的一个BUG
- 系统调用服务号 linux 2.6.32
- C++ STL vector详解
- Mac Eclipse 主题选择
- 图文详解Modbus-RTU协议
- 小学计算机专业说课稿模板,小学信息技术说课稿集锦
- escharts 柱状图 百分比_Echarts柱状图百分比显示
- html分享到微博,h5页面分享到微信、朋友圈、新浪微博、QQ空间、QQ好友组件
- 绿色碳点溶液|碳量子点激发波长:365nm发射波长:525nm
- VMWare 15虚拟机下载和安装说明兼容WIN10
- vscode C++ debug: lldb: unrecognized option `--interpreter=mi'
- 外包公司值不值得去?
- 《Digital Design and Computer Architecture》7.4 多周期CPU(1)
- 你了解HashMap吗?
- android 仿QQ好友动态 title滑动渐变
- oracle+函数怎么写if,Oracle NULLIF函数
- HTML中input标签和button标签区别
热门文章
- 纯电动汽车Matlab/Simulink软件模型,纯电动汽车动力性、经济性仿真模型
- 实测十款连锁店管理系统,专为纠结的连锁店老板打造!
- SpringCloud Alibaba实战(12:引入Dubbo实现RPC调用)
- sas9.2智能平台连接oracle数据库操作说明文档,SAS9.2 SID更新
- python软件是干嘛的-Python到底能做什么?
- lambda函数引用学习记录
- 什么是正直型人格?正直型性格的优劣势及职业分析
- oracle查询营业执照不对的sql
- Nginx rewrite 详解
- 工科数学分析 MA_12 Vectors and the Geometry of Space (上篇)