那我们在 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_COLOR
和 PRINT_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; | |
} |
总之,通过使用这些宏,我们可以轻松地为文本添加颜色和格式,使其更具可读性和美观性。
效果:✨