c# 如何在c中指定字符串中特定字符的颜色?

9gm1akwq  于 2022-11-20  发布在  C#
关注(0)|答案(2)|浏览(359)

我正在尝试用C语言将彩色文本输出到控制台。我知道您可以更改整个printf语句的颜色,但我想知道是否可以更改printf语句中单个字符的文本颜色。总之,我希望能够打印出“asdf”,其中a为红色,s为绿色,d为蓝色,F是橙子的,先谢谢你

qqrboqgw

qqrboqgw1#

我在周围找了一个临时工作:使用多个printf语句,因为它们不会转到下一行,我不太喜欢这个解决方案,所以如果有人有更好的解决方案,请发布它,如果它运行良好,我会接受它。

lkaoscv7

lkaoscv72#

首先,在C语言中,字符是没有颜色的,它们只是数字,所以你的问题和C语言没有任何关系,它根本不关心你如何打印。
您所指的是,一些终端接受一些控制字符,以指定它们应该如何呈现发送给它们的内容。这些只是特殊字符,并不意味着要打印,而是要修改终端行为。无法保证您的终端理解这些控制字符。也无法保证它们与其他终端是相同的控制字符。
一些库(如ncurses)具有您正在使用的终端的知识,并提供使其透明的帮助器函数。
尽管如此,用红色打印的方法(至少是最常见的一种)是

printf("\033[31m");

将终端切换为红色

printf("\033[m");

开关又恢复正常了。
这些都是控制字符,所以从C语言的Angular 来看,只是和其他字符一样的字符,要被打印出来,发送到终端,然后由终端来做它认为合适的事情。
只是像其他字符,没有什么阻止你混合他们与任何正常的字符,
你的例子

printf("\033[31ma\033[32ms\033[34md\033[33mf\033[m\n");

但是不能保证它能工作,你不能真的指望它,甚至不能保证它不会打印一些不需要的字符。

相关问题