You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为数组的特定区域上色(如火箭头部)

为C语言字符数组的特定区域添加ANSI颜色

要给火箭字符数组的特定区域上色,核心思路是放弃整行打印,改为逐个字符遍历判断,针对目标位置的字符插入ANSI颜色控制码,打印后再重置颜色。以下是具体实现方案:

步骤1:定义颜色宏(可选但推荐)

先把常用的ANSI颜色码定义成宏,让代码更易读:

#define RED "\e[31;1m"       // 亮红色
#define YELLOW "\e[33;1m"    // 亮黄色
#define RESET "\e[0m"        // 重置颜色,恢复默认

你也可以直接替换成你提供的颜色码,比如#define RED "\e[31;10m"。

步骤2:修改打印逻辑,逐个字符处理

原来的代码是整行输出rocket[i],现在改成嵌套循环遍历每个字符的坐标(i,j),通过条件判断识别目标区域,再针对性上色:

完整修改后的代码

#include <stdio.h>
#define LINE 11
#define COLN 11

// 自定义ANSI颜色宏
#define RED "\e[31;1m"
#define YELLOW "\e[33;1m"
#define RESET "\e[0m"

const char rocket[LINE][COLN] ={
"     ^     ",
"    /^\\    ",
"    |-|    ",
"    | |    ",
"    |W|    ",
"    |E|    ",
"    |E|    ",
"    |E|    ",
"   /| |\\   ",
"  / | | \  ",
" |  | |  | "
};

int main(){
    for(int i = 0; i < LINE; i++){
        for(int j = 0; j < COLN; j++){
            // 匹配火箭头部区域:前3行的核心符号
            if ((i == 0 && j == 5) || 
                (i == 1 && (j >=4 && j <=6)) || 
                (i == 2 && (j >=4 && j <=6))) {
                printf("%s%c%s", RED, rocket[i][j], RESET);
            }
            // 匹配WEEE区域:第4-7行的中间字符
            else if ((i >=4 && i <=7) && j ==5) {
                printf("%s%c%s", YELLOW, rocket[i][j], RESET);
            }
            // 其他字符正常打印
            else {
                printf("%c", rocket[i][j]);
            }
        }
        printf("\n"); // 每行结束换行
    }
    printf("\n");
    printf("%sBut if I want to color specific parts like the description, WEEE. %s\n", YELLOW, RESET);
    printf("%sIn the rocket, what will it be like?%s\n", RED, RESET);
}

关键逻辑说明

  1. 坐标匹配:通过字符的行号i和列号j定位目标区域,比如:
    • 火箭头部的^在第0行第5列(i=0,j=5)
    • 第1行的/^\对应列号4、5、6(j>=4 && j<=6)
  2. 颜色控制:打印目标字符前先输出颜色码,打印后必须输出RESET,否则后续所有字符都会继承当前颜色。
  3. 扩展性:如果需要上色的是矩形区域,可以直接用范围判断,比如i >=2 && i <=5 && j >=3 && j <=7;也可以把区域判断封装成函数,让代码更整洁。

内容的提问来源于stack exchange,提问作者Exponecial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:40:33