【发布时间】:2021-09-15 07:40:31
【问题描述】:
我是 C 新手,遇到了这段代码,让我很困惑:
sprintf(banner1, "\e[37╔═╗\e[37┌─┐\e[37┌┐┌\e[37┌─┐\e[37┌─┐\e[37┌─┐\e[37┌─┐\e[37m\r\n");
sprintf(banner2, "\e[37╠═╝\e[37├─┤\e[37│││\e[37│ ┬\e[37├─┤\e[37├┤\e[37 ├─┤\e[37m\r\n");
sprintf(banner3, "\e[37╩ \e[37┴ ┴┘\e[37└┘\e[37└─┘\e[37┴ ┴\e[37└─┘\e[37┴ ┴\e[37m\r\n");
我很困惑,因为我不知道 \e[37 和 \r\n 是什么意思。我可以改变颜色吗?
【问题讨论】:
-
也许您的终端不支持 ANSI 转义序列。您选择的其中一种语言似乎相关,您可以考虑删除其他两种语言,将更完整的minimal reproducible example 放在一起,并描述您运行它的环境。
-
\e[37m,如果在支持 ANSI 的终端上打印,将导致文本以白色打印(无论如何这是默认设置)。请注意,\e是 C 中的一个特殊序列,它提供了启动 ANSI 转义序列所必需的转义字符 (ASCII 27)。但是,您似乎确实可能遇到了转录错误,因为每个\e[37后面都应该跟一个m。要了解 ANSI 序列的工作原理,请在 Google 上搜索“ANSI Escape Sequences”。 -
\r\n是回车和换行,移动到下一行的开头。一般来说,在C语言中,只打印\n就足够了,因为\r是自动添加的,但是包含它并没有什么坏处。
标签: c printf ansi-colors