使用unicode和ANSI转义序列实现彩色的图形输出

0.一切问题来源于......好玩:)

某位高中同学的求助咩~

无用的知识又增加了(bushi

1.ANSI转义序列

#include <stdio.h>  
  
int main() {  
    // ANSI转义序列格式:\033[<参数>m  
    // 其中\033是ESC字符,<参数>是控制文本样式的代码  
  
    // 设置文本颜色为红色  
    printf("\033[31m这是红色文本\n");  
  
    // 重置文本样式到默认(通常是白色或黑色,取决于控制台设置)  
    printf("\033[0m");  
  
    // 设置文本颜色为绿色  
    printf("\033[32m这是绿色文本\n");  
  
    // 设置文本颜色为黄色(需要亮度和颜色组合)  
    printf("\033[1;33m这是黄色文本(带亮度)\n");  
  
    // 重置文本样式再次到默认  
    printf("\033[0m");  
  
    // 你可以继续添加更多颜色和样式的转义序列  
  
    return 0;  
}


  • 前景色(即文本颜色)


2.使用unicode实现图形的输出

#include <wchar.h>  
//提供了一组函数和宏,用于处理宽字符和多字节字符。

#include <locale.h>  
#include <stdio.h>  
  
int main() {  
    // 设置区域设置为用户的默认区域设置(通常包含对Unicode的支持)  
    setlocale(LC_ALL, "");  
  
    // 定义宽字符字符串,包含表示正方形的Unicode字符  
    const wchar_t *fangxing = L"\u25A0";
     // 或者使用L"■",如果编译器支持直接输入该字符  
    const wchar_t *yuan= L"\u25CB";
    const wchar_t *xing= L"\u2605";
    for(int i=0;i<14;i++){
        for(int k=0;k<14;k++){
            if(k==13) wprintf(L"\033[32m%ls\n", fangxing);
            else if(i==3&&k==1){
                wprintf(L"\033[31m%ls ", yuan);
                continue;
            } 
            else if(i==7){
                if(k==6||k==7||k==8) wprintf(L"\033[33m%ls ", xing);
                else wprintf(L"\033[32m%ls ", fangxing);
                continue;
            }
            else wprintf(L"\033[32m%ls ", fangxing);
        // 使用宽字符版本的printf函数来打印宽字符字符串  
           
        }
        
       // printf("\033[32mThis is green text\n");
    }
    return 0;  
}
  • 对于以上的效果展示

Unicode编码是一种国际标准,它为每种语言的每个字符提供了一个唯一的数字代码,以确保字符在不同平台、设备和程序之间的一致性和互操作性。Unicode编码涵盖了各种语言的字符,包括拉丁字母、汉字、阿拉伯字母、希腊字母等,以及各种符号和图形。

以下是一些Unicode编码中常见的图形表及其对应的编码范围(以十六进制表示):

  1. 基本拉丁字母(Basic Latin)
    • 编码范围:U+0000 - U+007F
    • 包括:标准的ASCII字符集,如英文字母(A-Z,a-z)、数字(0-9)、标点符号、控制字符等。
  2. 拉丁字母补充(Latin-1 Supplement)
    • 编码范围:U+0080 - U+00FF
    • 包括:扩展的拉丁字符,如带重音符号的字母(á,é,í,ó,ú等)、货币符号(€,$,£等)等。
  3. 拉丁字母扩展-A(Latin Extended-A)
    • 编码范围:U+0100 - U+017F
    • 包括:更多的拉丁字符变体,如拉丁小写字母的带钩形式(ḟ,ẛ等)、拉丁语系中的特殊字符(ł,ñ,ø等)。
  4. 数学运算符(Mathematical Operators)
    • 编码范围:U+2200 - U+22FF
    • 包括:各种数学符号,如加号(+)、减号(-)、乘号(×)、除号(÷)、等号(=)、不等号(≠)、求和符号(Σ)、积分符号(∫)等。
  5. 几何图形(Geometric Shapes)
    • 编码范围:U+25A0 - U+25FF
    • 包括:各种几何形状,如正方形(□)、圆形(○)、三角形(△)、菱形(◇)等。
  6. 箭头(Arrows)
    • 编码范围:U+2190 - U+21FF
    • 包括:各种箭头符号,如左箭头(←)、右箭头(→)、上箭头(↑)、下箭头(↓)、双向箭头(↔)、斜箭头(↗,↘,↙,↖)等。
  7. 表情符号(Emoji)
    • 编码范围:多个区块,如U+1F600 - U+1F64F(表情符号基础区块)、U+1F300 - U+1F5FF(杂项符号和图画)等。
    • 包括:各种表情符号,如笑脸(😊)、哭脸(😢)、心形(❤️)、星星(⭐)、动物(🐶,🐱)等。
  8. 中文字符(CJK Unified Ideographs)
    • 编码范围:U+4E00 - U+9FFF(常用范围),以及扩展区块如U+20000 - U+2A6DF(CJK扩展E)等。
    • 包括:汉字以及汉字相关的符号和部首。

请注意,以上列举的仅是一些常见的Unicode编码图形表及其对应的编码范围。Unicode编码非常庞大,包含了成千上万的字符和符号,涵盖了几乎所有的书写系统和符号系统。因此,在实际应用中,可能需要查阅更详细的Unicode编码表或数据库来获取特定字符的编码信息。(以上转载至文心一言)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值