C程序技能:彩色输出

在终端上输出的字体总是单色,但在一些场景彩色输出更能满足需求,在Linux环境中,可以使用终端控制字符来设置输出字符的颜色,在部分版本的Windows系统中也可以使用。本文参考一些文献简要介绍一下在Windows下彩色输出的方法。

1. ANSI 转义序列

在终端上不仅能够显示程序的输出,还可以以不同的配色方案输出。在实际应用中,常常使用两种配色方案:一是16 色(8背景+8前景),而是255 色。

16色的配色方案包含两个颜色设置,每个8色,一个是背景色,一个是字体色(也即前景色),这个配色方案的语法格式如图1所示[1]。

图片

图1 16色配色方案语法格式

例如:\033[1;32;40m

此处的 \033[ 是转义字符,1代表高亮,32代表前景色为绿色,背景色为黑色。

256色的配色方案的语法格式如图2所示,具体用法参看文献1

图片

图2 256色配色方案语法格式

2. 16色配色方案介绍

(1)在终端输出彩色文字的语法

用图1的格式设置彩色输出,然后输出文字,最后可以设置彩色格式输出结束,使用的控制字符为:\033[0m。以下图片均来自文献2

图片

图片

图片

图片

(2)在终端输出彩色文字解决方案

适用于Windows 10的解决方案是在输出文字前执行system("")函数,执行后允许在本机的命令提示符和Powershell中输出彩色文字。

3. 实例

输出一个心图案,然后在图案中间用不同颜色输出C程序设计与训练文字。

文献3介绍了如何保存光标位置和恢复光标位置的控制码。

ESC 7:保存光标位置在存储器中

ESC 8:从存储器中恢复光标位置

ESC [ <n> A:光标向上移动行数

ESC [ <n> C:光标向右移动位置

源程序如下:

#include <stdio.h>
#include <windows.h>

int main()
{
   system(""); // 设置终端可以显示彩色文本 
   printf("\033[1;31m"); // 高亮红字 
   for(double y=1.5; y>-1.5; y-=0.1){
     for(double x=-1.5; x<1.5; x+=0.05)  {
        double a = x*x+y*y-1;
        putchar(a*a*a-x*x*y*y*y <= 0.0f? '+' : ' ');
     }
     putchar('\n');
   }   
   printf("\033[0;41m"); // 默认,背景红色 
   printf("\0337\033[19A\033[23C"); // 设置光标位置:向上移动19行,向右移动23个位置 
   printf(" C程序设计与训练 ");
   printf("\0338");   // 恢复光标位置 
   printf("\033[0m"); // 彩色文本输出结束 
   return 0;
}

运行效果图。

图片

参考文献

[1]https://blog.csdn.net/star6112/article/details/129714869

[2]https://blog.csdn.net/weixin_69553582/article/details/125700943

[3]https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324796.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D PDF查看器HOOPS Publish助力Smartscape拓展日本AEC市场!

​ 公司&#xff1a;Smartscape Co., Ltd. 行业&#xff1a;建筑、工程和施工(AEC) 软件&#xff1a;适用于AEC行业的3D PDF工具 软件开发工具包&#xff1a;Hoops Publish HOOPS_3D软件开发工具_HOOPS中文网慧都科技是HOOPS全套产品中国地区指定授权经销商&#xff0c;提供3D…

使用@Slf4j后引入log,idea标红

引入Slf4j注解 idea标红Cannot resolve symbol ‘log’ 引入Lombok插件 如果在Marketplace查不到时&#xff0c;不妨关闭菜单再打开试下

微信小程序canvas画布图片保存到相册官方授权、自定义授权、保存

关键步骤介绍 wx.getSetting可以获取授权信息。 wx.authorize首次授权时会打开弹框让用户授权&#xff0c;若用户已选择同意或拒绝&#xff0c;后续不会再显示授权弹框。 如果授权信息显示未进行相册授权&#xff0c;则打开自定义弹框&#xff08;show_auth: true&#xff0…

【前端框架】Vue3合集

一、Vue3初识 1、create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了 vite &#xff08;下一代前端工具链&#xff09;&#xff0c;为开发提供极速响应 前置条件&#xff1a;16.0或更高版本的Node.js 安装并执行 create-vue npm init vuelatest2、项目…

前端如何压缩图片在进行上传给后端

前端压缩图片我目前能想到的就是 通过canvas 改变图片的 画质去改变图片的大小。 解决方案如下&#xff1a; 1、首先获取图片的全部内容&#xff0c;然后转化为base64让他可以在页面上展示。 2、当我们获取到base64的图片的时候我们就可以获取图片的大小尺寸。 3、我们把这个图…

Notepad++运行C语言输出乱码

方法一&#xff1a;编码-编码字符集-中文-GB2312 这时原程序中文会变成乱码&#xff0c;我是重新输入中文 重新编译执行即可 缺陷&#xff1a;重开一个程序有中文还是会显示乱码&#xff0c;需要重新设置编码&#xff0c;比较麻烦 方法二&#xff1a;设置-首选项-新建-右侧编…

What does `ResponseEntity` do?

ResponseEntity 作为 Spring MVC controller层 的 HTTP response&#xff0c;包含 status code, headers, body 这三部分。 正常场景 RestController Slf4j public class SearchController {AutowiredUserService userService;RequestMapping(value "/getAllStudents4&…

F-Droid:开源Android应用的宝库

F-Droid&#xff1a;开源Android应用的宝库 引言 F-Droid是一个开源应用程序存储库&#xff0c;旨在为安卓用户提供自由、隐私和安全的应用程序。它最初于2010年由Ciaran Gultnieks创建&#xff0c;因为他认为Google Play Store上的应用程序不够透明和安全。F-Droid的目标是为…

【C语言知识】原码反码和补码

一&#xff0c;简介 总结进制转换&#xff0c;原码&#xff0c;反码和补码相关基础知识。 二&#xff0c;具体说明 2.1 十进制转二进制方法 14(D)转换为二进制为&#xff08;0000 1110 &#xff09; -21(D)转换为二进制为&#xff08;1001 0101&#xff09;&#xff0c;先…

Java中的Socket你了解吗

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

java基础 - 03 List之AbstractSequentialList、LinkedList

上一篇我们围绕了ArrayList以及List进行简单介绍&#xff0c;本篇我们将围绕AbstractSequentialList、LinkedList进行。 AbstractSequentialList AbstractSequentialList是Java集合框架中的一个抽象类&#xff0c;它实现了List接口&#xff0c;并且是针对顺序访问的列表数据结…

探索设计模式的魅力:工厂方法模式

工厂方法模式是一种创建型设计模式&#xff0c;它提供了一种创建对象的接口&#xff0c;但将具体实例化对象的工作推迟到子类中完成。这样做的目的是创建对象时不用依赖于具体的类&#xff0c;而是依赖于抽象&#xff0c;这提高了系统的灵活性和可扩展性。 以下是工厂方法模式的…

基于物联网设计的智能储物柜(4G+华为云IOT+微信小程序)

一、项目介绍 在游乐场、商场、景区等人流量较大的地方&#xff0c;往往存在用户需要临时存放物品的情况&#xff0c;例如行李箱、外套、购物袋等。为了满足用户的储物需求&#xff0c;并提供更加便捷的服务体验&#xff0c;当前设计了一款物联网智能储物柜。 该智能储物柜通…

矩阵快速幂技巧练习(一)— 经典牛问题

上一篇文章简单介绍了斐波那契数列的矩阵乘法&#xff0c;并做了一个小推广&#xff0c;这篇文章来小试牛刀&#xff0c;做一个经典的练习题。 求斐波那契数列矩阵乘法的方法 题目 第一年农场有一只成熟的母牛A&#xff0c;往后的每年&#xff1a; 每一只成熟的母牛都会生一只…

MySQL面试题 | 09.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【Debian】非图形界面Debian10.0.0安装xfce和lxde桌面

一、安装 1. Debian10.0.0安装xfce桌面 sudo apt update sudo apt install xfce4 startxfce4 2. Debian10.0.0安装lxde桌面 sudo apt-get install lxde安装后重启电脑。 二、说明 XFCE、LXDE 和 GNOME 是三个流行的桌面环境&#xff0c;它们都是为类 Unix 操作系统设计…

C语言:编译和链接

目录 一&#xff1a;翻译环境和运行环境 二&#xff1a;翻译环境 2.1预处理&#xff08;预编译&#xff09; 2.2编译 2.2.1 词法分析&#xff1a; 2.2.2语法分析 2.2.3语义分析 2.3 汇编 三&#xff1a;运行环境 一&#xff1a;翻译环境和运行环境 在ANSI C的任何一种…

微信小程序------WXML模板语法之条件渲染和列表渲染

目录 前言 一、条件渲染 1.wx:if 2. 结合 使用 wx:if 3. hidden 4. wx:if 与 hidden 的对比 二、列表渲染 1. wx:for 2. 手动指定索引和当前项的变量名* 3. wx:key 的使用 前言 上一期我们讲解wxml模版语法中的数据绑定和事件绑定&#xff08;上一期链接&#xff1a;…

MATLAB - 使用运动学 DH 参数构建机械臂

系列文章目录 前言 一、 使用 Puma560 机械手机器人的 Denavit-Hartenberg (DH) 参数&#xff0c;逐步建立刚体树形机器人模型。在连接每个关节时&#xff0c;指定其相对 DH 参数。可视化机器人坐标系&#xff0c;并与最终模型进行交互。 DH 参数定义了每个刚体通过关节与其父…

Go-gin-example 第二部分 jwt验证

文章目录 使用 JWT 进行身份校验jwt知识点补充认识JWTTOKEN是什么jwt的使用场景jwt的组成headerpayloadsignature 下载依赖包编写 jwt 工具包jwt中间件编写如何获取token 编写获取token的Apimodels逻辑编写路由逻辑编写修改路由逻辑 验证token将中间件接入Gin功能验证模块 续接…