Linux中的彩色控制台输出

4

我刚开始学习C编程语言。遇到的第一个问题是选择在哪个平台上进行学习,我选择了Ubuntu。我找到了一个GCC编译器来编译我的项目,在终端中运行编译后的项目非常顺畅。

但是,当我想写一个在彩色背景上显示文本的程序时,我意识到终端无法帮助我。实际上,我是在学习Windows上的编程课程,他们使用Borland C++ 5.2,但这些课程是2007年编写的。

所以我想知道,在Ubuntu 10.10上应该在哪里运行我的编译程序才能正确地看到结果?实际上,我尝试过切换到Windows,但我的电脑上的Ubuntu工作速度更快,而且我认为在Ubuntu上工作比在Windows上更容易。

3个回答

7

在没有任何工具包的情况下,打印彩色消息最简单的方法是使用VT100转义命令:http://www.termsys.demon.co.uk/vtansi.htm#colors

因此,您可以编写类似以下的内容:

printf("\x1b[31mThis is red text\x1b[0m\n");
printf("\x1b[32mThis is green text\x1b[0m\n");

但是,这段代码仅适用于VT100兼容终端(几乎所有Unix系统的终端都是兼容的)。最好的方法是在给输出上色之前检查TERM环境变量。

免责声明:如果您想编写能够与所有终端类型兼容的代码,则应使用类似于ncurses的库。


3

ncurses库正好满足您的需求。使用此库,您可以选择在屏幕上任何位置编写任何文本,并设置任何文本/背景颜色。

您可以在Wikipedia上了解更多信息。您可以在Ubuntu下安装它:

$ sudo apt-get install libncurses5-dev

0

如果你想在Linux上开始GUI编程,你可能需要了解其中一个GUI工具包,它是用于编写GUI元素、小部件等的库。

其中之一是Gtk,你可以通过Gtk教程开始学习。另一个选择是Qt,它可能更容易使用,但是它基于C++。

恐怕Borland C++ Windows课程对Linux GUI编程几乎没有用处。

或者,如果你只想要带颜色的终端文本,请查看这个问题:C中的stdlib和彩色输出


谢谢回答。但实际上我只想运行一个用C语言编写的项目,其中包含彩色文本。就像在Borland C++中,在编译项目后,运行它时会在另一个窗口中打开,并且如果您的程序包含可以更改此背景颜色的代码,则会更改。但是在Ubuntu终端中执行此操作时,您将无法获得此结果。 - 454b
@EmiLazE:哦,改变背景颜色是可能的。看看我添加的链接。 - che
1
@EdwinBuck,他的句子“当我想写一个程序,需要在彩色背景上显示文本”清楚地表明他希望输出是彩色的,而不是他的IDE。 - Shahbaz
1
请注意,您的“用C编写的项目”没有使用任何标准的C库来输出彩色文本!它正在使用Borland API,这些API在Linux上根本不存在。当然,如果您愿意,可以自己使用ncurses实现它们。我个人更愿意利用ncurses,并接受旧的Borland C控制台代码不可移植且无法在其他地方工作的事实。 - Kuba hasn't forgotten Monica
@KubaOber,如果您能帮我找到ncurses颜色值,例如红色是\E[31m,绿色是\E[32m,我会非常高兴。(我尝试将“E”替换为“x1b”,它也可以工作。为什么?) - 454b
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接