那我们在 code 的过程中有没有想封装一下 printf 的想法呢?加上一些自己的独有的属性?

好吧!我来啦😘!

首先,让我们定义一些常用的文本颜色和格式的宏:

#define RESET           "\033[0m"     // 重置所有属性
#define BOLD            "\033[1m"     // 粗体
#define UNDERLINE       "\033[4m"     // 下划线
#define RED             "\033[31m"    // 红色
#define GREEN           "\033[32m"    // 绿色
#define YELLOW          "\033[33m"    // 黄色
#define BLUE            "\033[34m"    // 蓝色
#define MAGENTA         "\033[35m"    // 洋红色
#define CYAN            "\033[36m"    // 青色

这些宏定义了不同的颜色和格式,如粗体、下划线、红色、绿色等。下面是每个宏的说明:

  • RESET :重置所有属性。
  • BOLD :粗体。
  • UNDERLINE :下划线。
  • RED :红色。
  • GREEN :绿色。
  • YELLOW :黄色。
  • BLUE :蓝色。
  • MAGENTA :洋红色。
  • CYAN :青色。

接下来,我们定义两个输出宏: PRINT_COLORPRINT_FORMAT 。这些宏将使用上述颜色和格式宏来为文本添加颜色和格式。

#define PRINT_COLOR(color, format, ...) \
    printf(color format RESET, ##__VA_ARGS__)
#define PRINT_FORMAT(format, ...) \
    printf(format, ##__VA_ARGS__)
  • PRINT_COLOR 宏接受一个颜色宏作为第一个参数,后面是格式化字符串和可变数量的参数。它使用 printf 函数来输出带有指定颜色的文本,并通过添加 RESET 宏来重置所有属性,以防止颜色影响后续输出。
  • PRINT_FORMAT 宏仅接受格式化字符串和可变数量的参数,不附加任何颜色属性。它仅使用 printf 函数直接输出格式化的文本。

下面是使用这些宏来打印不同颜色和格式的文本的示例:

int main(void) {
    int num = 10;
    const char* str = "Hello, World!";
    
    // 使用不同颜色和格式输出
    
    // 输出红色数字
    PRINT_COLOR(RED, "Number: %d\n", num);
    
    // 输出绿色字符串
    PRINT_COLOR(GREEN, "String: %s\n", str);
    
    // 输出粗体、下划线、洋红色格式化字符串
    PRINT_FORMAT(BOLD UNDERLINE MAGENTA "Combined format: %d, %s\n", num, str);
    
    return 0;
}

总之,通过使用这些宏,我们可以轻松地为文本添加颜色和格式,使其更具可读性和美观性。

效果:✨

image-20231209100603047

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

flechazo 微信支付

微信支付

flechazo 支付宝

支付宝

flechazo 贝宝

贝宝