C程序技能:彩色输出

news2024/11/14 21:31:44

在终端上输出的字体总是单色,但在一些场景彩色输出更能满足需求,在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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新Win11系统怎么删除开机密码 Win11取消登录密码图文教程

将账户设置为自动输入微软账户的密码&#xff0c;就是省略了手动打密码的步骤而已变成自动化了。 教程如下&#xff1a; A方法↓第一步:打开设置——账户——登录选项 ↓第二步:登录选项——其他设置——为了提高安全性&#xff0c;这里选择关闭&#xff0c;这一步是为了降低…

基于SSM的流浪动物救助站

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

提升开发效率的google插件

在如今的软件开发领域&#xff0c;Google Chrome浏览器的开发者插件扮演着至关重要的角色&#xff0c;为开发人员提供了丰富的工具和功能&#xff0c;从而提高了开发效率。下面介绍几款强大的 Google 插件&#xff0c;它们在不同方面为开发者提供了便利&#xff0c;并能显著提升…

任务12:使用Hadoop Streaming解压NCDC天气原始数据

任务描述 知识点&#xff1a; NCDC原始的气象数据上传到HDFSMapReduce程序处理NCDC原始数据 重 点&#xff1a; 熟练使用HDFS基础命令查看HDFS文件块的分布情况掌握Linux系统Shell脚本的编写熟练使用MapReduce程序解压缩文件使用MapReduce程序处理NCDC气象数据 内 容&am…

2024.1.15 网络编程 作业

思维导图 练习题 1.实现TCP服务器和客户端之间的通信 server.c #include <myhead.h>int main(int argc, char const *argv[]) {//创建套接字int sfd socket(AF_INET, SOCK_STREAM, 0);//端口复用&#xff0c;作用&#xff1a;关闭服务器后再启动不会等待int reuse 1…

谷粒商城篇章8 ---- P236-P247 ---- 购物车【分布式高级篇五】

目录 1 环境搭建 1.1 新建购物车服务模块gulimall-cart 1.2 购物车服务相关配置 1.2.1 pom.xml 1.2.2 yml配置 1.2.2.1 application.yml配置 1.2.2.2 bootstrap.yml配置 1.2.3 主类 1.3 SwitchHosts增加配置 1.4 网关配置 1.5 整合SpringSession 1.5.1 session数据…

RPA与通知机器人的完美结合

写在前面 在现代快节奏的工作环境中&#xff0c;我们经常会面临多个任务同时进行的情况&#xff0c;你还在为时间不够用、忙碌而惆怅吗&#xff1f;你还在为时刻盯着电脑流程而烦恼吗&#xff1f;你还在为及时收不到自己的自动化任务进度而焦躁吗&#xff1f;别担心&#xff0…

Elasticsearch:聊天机器人教程(二)

这是继上一篇文章 “Elasticsearch&#xff1a;聊天机器人教程&#xff08;一&#xff09;”的续篇。本教程的这一部分讨论聊天机器人实现中最有趣的方面&#xff0c;以帮助你理解它并对其进行自定义。 数据摄入 在此应用程序中&#xff0c;所有示例文档的摄取都是通过 flask …

教你用五步让千年的兵马俑跳上现代的科目三?

以下是一张我上月去西安拍的兵马俑照片&#xff1a; 使用通义千问&#xff0c;5步就能它舞动起来&#xff0c;跳上现在流行的“科目三”舞蹈。 千年兵马俑跳上科目三 全民舞王 第1步 打开通义千问App&#xff0c;我使用的是华为手机&#xff0c;苹果版的没试&#xff1b; 在…

编译 FastDFS 时报错 fatal error: sf/sf_global.h: No such file or directory 解决办法

编译 FastDFS 时&#xff0c;报错如下 gcc -Wall -D_FILE_OFFSET_BITS64 -D_GNU_SOURCE -g -O1 -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c -I../common -I/usr/local/include In file included from ../common/fdfs_global.c:21:0: ../common/fdf…

【控制篇 / 分流】(7.4) ❀ 01. 对指定IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带&#xff0c;一条ADSL拨号用来上网&#xff0c;一条移动SDWAN&#xff0c;已经连通总部内网服务器&#xff0c;领导要求&#xff0c;只有访问公司服务器IP时走移动SDWAN&#xff0c;其它访问都走ADSL拨号&#xff0c;如果你是管理员&#xff0c;你知道有…

pod 控制器

pod 控制器&#xff1a; pv pvc 动态pv pod控制器&#xff1a;工作负载&#xff0c;workload&#xff0c;用于管理pod的中间层&#xff0c;确保pod资源符号预期的状态。 预期状态&#xff1a; 1&#xff0c;副本数 2&#xff0c;容器的重启策略 3&#xff0c;镜像拉取策略…

【软件测试】前端性能测试工具原理

不同于后端性能测试知识的琐碎、独立&#xff0c;这篇文章为你介绍前端性能测试工具WebPagetest&#xff0c;以一个具体网站为例&#xff0c;和你分析WebPagetest的用法&#xff0c;以及前端性能相关的主要概念与指标。 WebPagetest功能简介 WebPagetest&#xff0c;是前端性…

STM32--7针0.96寸OLED屏幕显示(4线SPI)

本文介绍基于STM32F103C8T60.96寸OLED&#xff08;7针&#xff09;的显示&#xff08;完整程序代码见文末链接&#xff09; 一、简介 OLED&#xff0c;即有机发光二极管&#xff08; Organic Light Emitting Diode&#xff09;。 OLED 由于同时具备自发光&#xff0c;不需背光…

【RL】(task1)绪论、马尔科夫过程、动态规划、DQN(更新中)

note 文章目录 note一、马尔科夫过程二、动态规划DQN算法时间安排Reference 一、马尔科夫过程 递归结构形式的贝尔曼方程计算给定状态下的预期回报&#xff0c;这样的方式使得用逐步迭代的方法就能逼近真实的状态/行动值。 有了Bellman equation就可以计算价值函数了马尔科夫过…

day2·算法-快乐数-有效三角形个数

今天又来更新啦&#xff0c;准备蓝桥杯的小伙伴可以和我一起来刷题&#xff0c;建议大家先看题&#xff0c;整理出思路&#xff0c;再看如何用简单的写法将思路构建出来&#xff0c;然后优化细节&#xff0c;找到解决某些例外出现的方法&#xff0c;从而成功解答这道题。 快乐…

ucloud轻量云(wordpress)配置ssl

ucloud 轻量云(wordpress)配置ssl 1、上传ssl证书到/usr/local/software/apache/conf&#xff0c;这里的文件名和内容与ucloud控制台下载下来的文件名和内容保持一致 2、修改httpd.conf文件 vim /usr/local/software/apache/conf/httpd.conf 找到下面两行&#xff0c;去掉注…

SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用

四、Database MetaData 与 SQL Express Language 的使用 MetaData对象用于描述表结构&#xff0c;SQL Express Language是DBAPI SQL的统一封装器。MetaData 与SQL Express 语句可以在Core层使用&#xff0c;ORM层基于MetaData, SQL Express基础上做了进一步抽象。本章将介绍在…

前端框架前置学习Node.js(2)npm使用,Node.js总结

npm - 软件包管理器 定义 npm是Node.js标准的软件包管理器 npm仓库中包含大量软件包,使其成为世界上最大的单一语言代码仓,并且可以确定几乎可用于一切的软件包 最初是为了下载和管理Node.js包依赖的方式,但其现在已成为前端JavaScript中使用的工具 使用: 1.初始化清单文…

VC++读取ini文件示例2

之前学习过ini文件读写&#xff1b;继续熟悉&#xff1b; CString str1;UINT m1 0;UINT m2 0;TCHAR p1[32];m1 GetPrivateProfileString(_T("mymoney1"), _T("moneyname1"), _T("空"), p1, sizeof(p1), _T("E:\\VCPrj\\VC2015\\cattest\…