一些c语言特殊用法

news/2025/10/24 8:34:27/文章来源:https://www.cnblogs.com/janio/p/19148777

C语言一些高级输出技巧与数组初始化

控制台颜色输出

完整颜色定义头文件

创建 colors.h 头文件:

#ifndef COLORS_H
#define COLORS_H// 重置所有属性
#define RESET       "\033[0m"// 常规前景色
#define BLACK       "\033[30m"
#define RED         "\033[31m"
#define GREEN       "\033[32m"
#define YELLOW      "\033[33m"
#define BLUE        "\033[34m"
#define MAGENTA     "\033[35m"
#define CYAN        "\033[36m"
#define WHITE       "\033[37m"// 亮色前景色
#define BRIGHT_BLACK    "\033[90m"
#define BRIGHT_RED      "\033[91m"
#define BRIGHT_GREEN    "\033[92m"
#define BRIGHT_YELLOW   "\033[93m"
#define BRIGHT_BLUE     "\033[94m"
#define BRIGHT_MAGENTA  "\033[95m"
#define BRIGHT_CYAN     "\033[96m"
#define BRIGHT_WHITE    "\033[97m"// 常规背景色
#define BG_BLACK    "\033[40m"
#define BG_RED      "\033[41m"
#define BG_GREEN    "\033[42m"
#define BG_YELLOW   "\033[43m"
#define BG_BLUE     "\033[44m"
#define BG_MAGENTA  "\033[45m"
#define BG_CYAN     "\033[46m"
#define BG_WHITE    "\033[47m"// 亮色背景色
#define BG_BRIGHT_BLACK     "\033[100m"
#define BG_BRIGHT_RED       "\033[101m"
#define BG_BRIGHT_GREEN     "\033[102m"
#define BG_BRIGHT_YELLOW    "\033[103m"
#define BG_BRIGHT_BLUE      "\033[104m"
#define BG_BRIGHT_MAGENTA   "\033[105m"
#define BG_BRIGHT_CYAN      "\033[106m"
#define BG_BRIGHT_WHITE     "\033[107m"// 文本样式
#define BOLD        "\033[1m"
#define DIM         "\033[2m"
#define ITALIC      "\033[3m"
#define UNDERLINE   "\033[4m"
#define BLINK       "\033[5m"
#define REVERSE     "\033[7m"
#define HIDDEN      "\033[8m"
#define STRIKE      "\033[9m"#endifint main() {// 前景色示例printf(RED "这是红色文本" RESET "\n");printf(GREEN "这是绿色文本" RESET "\n");printf(YELLOW "这是黄色文本" RESET "\n");printf(BLUE "这是蓝色文本" RESET "\n");printf(MAGENTA "这是洋红色文本" RESET "\n");printf(CYAN "这是青色文本" RESET "\n");printf(WHITE "这是白色文本" RESET "\n");printf("\n");// 背景色示例printf(BG_RED "这是红色背景" RESET "\n");printf(BG_GREEN "这是绿色背景" RESET "\n");printf(BG_YELLOW "这是黄色背景" RESET "\n");printf(BG_BLUE "这是蓝色背景" RESET "\n");printf(BG_MAGENTA "这是洋红色背景" RESET "\n");printf(BG_CYAN "这是青色背景" RESET "\n");printf(BG_WHITE "这是白色背景" RESET "\n");printf("\n");// 组合前景和背景色printf(RED BG_WHITE "红字白底" RESET "\n");printf(BLUE BG_YELLOW "蓝字黄底" RESET "\n");printf(WHITE BG_RED "白字红底" RESET "\n");return 0;
}
示例

重复刷新一行的输出技巧

要在同一行中不断闪现随机名字,需要用到一个特殊字符:‘\r’它的作用,是将光标移动到行首,但不换行,此时如果输出信息,那么这些信息就会覆盖原有的内容。重复这个过程,妥善处理一行内容长短不一的问题,就可以在同一样中不断闪现不同的名字。

动态进度显示

#include <stdio.h>
#include <unistd.h>  // sleep函数
#include <string.h>// 动态加载动画
void loading_animation(const char* message, int duration_sec) {const char* frames[] = {"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"};int frame_count = sizeof(frames) / sizeof(frames[0]);for (int i = 0; i < duration_sec * 10; i++) {printf("\r%s %s %s", frames[i % frame_count], message, i % 20 < 10 ? "|" : " ");fflush(stdout);usleep(100000); // 100ms}printf("\r✓ %s 完成!\n", message);
}// 倒计时显示
void countdown(int seconds) {for (int i = seconds; i > 0; i--) {printf("\r倒计时: " RED "%d" RESET " 秒", i);fflush(stdout);sleep(1);}printf("\r" GREEN "开始执行!          \n" RESET);
}// 实时数据更新
void real_time_display() {int values[] = {23, 45, 67, 89, 12, 34, 56, 78, 90};int count = sizeof(values) / sizeof(values[0]);for (int i = 0; i < 20; i++) {int index = i % count;printf("\r当前数值: " CYAN "%3d" RESET " | 进度: [", values[index]);// 动态进度条for (int j = 0; j < 20; j++) {if (j <= i % 20) {printf(BRIGHT_GREEN "█");} else {printf(DIM "░");}}printf(RESET "]");fflush(stdout);usleep(200000); // 200ms}printf("\n");
}int main() {printf("=== 动态刷新演示 ===\n");loading_animation("正在加载数据", 3);countdown(5);real_time_display();return 0;
}
示例

使用头文件预处理初始化数组

文本文件数据
创建 NameList.txt

"Alice",
"Bob",
"Charlie", 
"David",
"Eve",
"Frank",
"Grace",
"Henry",
"Ivy",
"Jack"

创建 ConfigData.txt

{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12}

主程序使用

#include <stdio.h>
#include <stdlib.h>// 方法1: 初始化字符串数组
char *Names[] = {#include "NameList.txt"NULL  // 结束标记
};// 方法2: 初始化二维数组
int Matrix[][3] = {#include "ConfigData.txt"
};// 方法3: 带条件的初始化
#ifdef DEBUG_MODEchar *LogLevels[] = {"TRACE","DEBUG", "INFO","WARN","ERROR","FATAL"};
#elsechar *LogLevels[] = {"INFO","WARN", "ERROR","FATAL"};
#endif// 计算数组元素个数
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))int main() {// 显示名称列表printf("=== 名称列表 ===\n");for (int i = 0; Names[i] != NULL; i++) {printf("%d: %s\n", i + 1, Names[i]);}// 显示矩阵数据printf("\n=== 矩阵数据 ===\n");int rows = ARRAY_SIZE(Matrix);int cols = ARRAY_SIZE(Matrix[0]);for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {printf("%3d ", Matrix[i][j]);}printf("\n");}// 显示日志级别printf("\n=== 日志级别 ===\n");for (int i = 0; i < ARRAY_SIZE(LogLevels); i++) {printf("%s ", LogLevels[i]);}printf("\n");return 0;
}
示例

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

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

相关文章

题解:P4204 [NOI2006] 神奇口袋

题意:口袋里有 \(t\) 种球,每种球初始有 \(a_i\) 个,每次从其中随机拿一个球并放回,同时再放入 \(d\) 个和拿出来球同种颜色的球。现在给出若干对 \((x_i,y_i)\),问同时满足第 \(x_i\) 次操作摸出来 \(y_i\) 这一…

2025年超声波检测设备厂家权威推荐榜:相控阵/高频/水浸/液冷板/钎焊超声波检测系统,技术实力与选购指南深度解析

2025年超声波检测设备厂家权威推荐榜:相控阵/高频/水浸/液冷板/钎焊超声波检测系统,技术实力与选购指南深度解析 行业背景与发展现状 超声波检测技术作为无损检测领域的重要组成部分,近年来在工业制造、航空航天、新…

2025年环氧板厂家推荐排行榜,环氧板加工,FR-4玻纤板,云母板,专业定制与优质材料供应商精选

2025年环氧板厂家推荐排行榜,环氧板加工,FR-4玻纤板,云母板,专业定制与优质材料供应商精选 随着电子电气、航空航天、轨道交通等高端制造业的快速发展,环氧板、FR-4玻纤板、云母板等高性能绝缘材料的需求持续增长…

sql server查看所有表名以及注释

下面是一个示例查询,它将返回带有序号的表名和注释: 使用 sys.tables 和 sys.extended_properties 表: SELECT ROW_NUMBER() OVER (ORDER BY t.name) AS 序号, t.name AS 表名, p.value AS 注释 FROM sys.tables AS…

SQL - 递归查询父节点

SQL - 递归查询父节点表a中有id, parent_id两个字段,parent_id存id的上一级id。请帮我写一个SQL语句,递归查询出一个id的所有parent_id,输出为一行数据多个列。 ChatGPT said:非常好的问题 👍 这是一个典型的树形…

2025.10.24——1绿

普及+/提高 P2886 [USACO07NOV] Cow Relays G 矩阵乘法优化DP/Floyd不需要啊,纯DP就能过……

2025年精密弹簧厂家权威推荐榜单:压缩弹簧、拉伸弹簧、扭转弹簧、异形弹簧专业制造商综合评测与选购指南

2025年精密弹簧厂家权威推荐榜单:压缩弹簧、拉伸弹簧、扭转弹簧、异形弹簧专业制造商综合评测与选购指南 在工业制造领域,精密弹簧作为关键功能部件,其质量直接影响整个设备系统的性能稳定性和使用寿命。随着产业升…

PyQuokka框架存在Pickle反序列化远程代码执行漏洞

本文详细分析了PyQuokka框架中FlightServer类的安全漏洞,攻击者可通过恶意Pickle反序列化实现远程代码执行,影响版本<=0.3.1,CVSS评分9.8分属于严重级别。PyQuokka框架远程代码执行漏洞分析 漏洞概述 在PyQuokka…

2025年磨粉机厂家推荐排行榜,雷蒙磨粉机,环辊磨粉机,摆式磨粉机,矿石磨粉机,超细磨粉机,高压磨粉机,大型磨粉机公司推荐

2025年磨粉机厂家推荐排行榜:专业解析雷蒙磨粉机与环辊磨粉机技术趋势 行业背景与发展现状 磨粉设备作为工业生产中不可或缺的关键设备,其技术发展与产业升级紧密相连。从传统的雷蒙磨粉机到现代的超细磨粉机,磨粉技…

SQL Server 建表语句

当然可以!下面是你提供的完整 SQL 脚本,逐行添加了详细中文注释,特别适合刚学习 SQL Server 的你理解每一句的作用。-- 切换当前数据库上下文为 ProConfigDB(后续所有操作都在这个数据库中进行) use ProConfigDB …

2025年润滑油厂家权威推荐榜:工业润滑油,汽车润滑油,发动机润滑油,甲醇发动机润滑油,三特/三球/安迪森润滑油,全合成润滑油,中国润滑油,长效发动机润滑油厂家精选

2025年润滑油厂家权威推荐榜:工业润滑油,汽车润滑油,发动机润滑油,甲醇发动机润滑油,三特/三球/安迪森润滑油,全合成润滑油,中国润滑油,长效发动机润滑油厂家精选 行业背景与发展趋势 随着中国制造业的持续升级…

SQL Server 报错引用了无效的表`表名`

写的有问题 ,把下面那个drop table Projects改成 drop table Equipments 就好了

2025年氢氧化镁厂家权威推荐榜:矿石氢氧化镁/水镁石氢氧化镁/阻燃剂氢氧化镁/改性氢氧化镁源头企业综合评测与采购指南

2025年氢氧化镁厂家权威推荐榜:矿石氢氧化镁/水镁石氢氧化镁/阻燃剂氢氧化镁/改性氢氧化镁源头企业综合评测与采购指南 氢氧化镁作为一种重要的无机化工原料,在阻燃材料、环保处理、医药制备等领域发挥着不可替代的作…

Nexpose 8.25.0 for Linux Windows - 漏洞扫描

Nexpose 8.25.0 for Linux & Windows - 漏洞扫描Nexpose 8.25.0 for Linux & Windows - 漏洞扫描 Rapid7 on-prem Vulnerability Management, released Oct 22, 2025 请访问原文链接:https://sysin.org/blog/…

NVIDIA —— 智能仓储

NVIDIA —— 智能仓储相关: https://www.nvidia.com/en-us/ai-data-science/ai-workflows/multi-camera-tracking/ https://zhuanlan.zhihu.com/p/35391826MTMC技术相关 ‌计算机视觉领域‌:NVIDIA提出的多相机多目标…

工作出行计划 —— 15号出发去石家庄,参加17号的会展 —— 2025中国国际数字经济博览会10月17日至19日在石家庄举行

工作出行计划 —— 15号出发去石家庄,参加17号的会展 —— 2025中国国际数字经济博览会10月17日至19日在石家庄举行相关: https://www.hebei.gov.cn/columns/580d0301-2e0b-4152-9dd1-7d7f4e0f4980/202509/18/9c2409…

人工智能学院课程设计

人工智能学院课程设计本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。 如果未特殊标注…

2025年冲压件厂家推荐排行榜,新能源冲压件,光伏冲压件,精密冲压件,异形冲压件,五金冲压件,铝冲压件,汽配冲压件,不锈钢冲压件,家具冲压件公司推荐

2025年冲压件厂家推荐排行榜:新能源、光伏、精密等细分领域权威指南 行业背景与发展趋势 随着制造业转型升级的不断深入,冲压件行业正迎来新一轮技术变革与市场重构。在新能源、光伏、汽车、家电等领域的快速发展推动…

2025年电源适配器厂家权威推荐榜单:开关电源适配器,笔记本电源适配器,手机电源适配器,工业电源适配器公司精选

2025年电源适配器厂家权威推荐榜单:开关电源适配器,笔记本电源适配器,手机电源适配器,工业电源适配器公司精选 行业背景与市场格局 随着全球数字化转型进程加速,电源适配器作为电子设备的核心能源供应部件,其技术…

2025年环保空调厂家权威推荐榜:移动式环保空调,节能环保空调,工业环保空调源头厂家综合解析与选购指南

2025年环保空调厂家权威推荐榜:移动式环保空调,节能环保空调,工业环保空调源头厂家综合解析与选购指南 在气候变化与能源转型的双重压力下,环保空调产业正迎来前所未有的发展机遇。作为工业与商业领域的关键能耗设…