【问题标题】:C - Change text colour of single words in Console Application?C - 在控制台应用程序中更改单个单词的文本颜色?
【发布时间】:2015-09-17 04:00:27
【问题描述】:

我正在为学校开展一个项目,我希望能够将用户的钱显示为黄色文本,以便于阅读。到目前为止,我已经找到了一种使用

对整个窗口执行此操作的方法
system("COLOR 06"); 

但这不是我想要的。我在 Windows 的控制台应用程序中运行,所以一些颜色会很好地使它达到标准。这可以在 C 中实现吗?

【问题讨论】:

  • 你可以使用 ansi 转义码
  • @cabellicar123:这对cmd.exe也有效吗?

标签: c windows text colors


【解决方案1】:

您可以使用以下命令,而不是调用系统命令,并假设您只处理 Windows 应用程序:

  HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

  SetConsoleTextAttribute(hStdOut, (FOREGROUND_BLUE | BACKGROUND_GREEN));

  printf("I'm BLUE ");

  SetConsoleTextAttribute(hStdOut, (FOREGROUND_RED | BACKGROUND_GREEN));

  printf("and I'm RED ");

  SetConsoleTextAttribute(hStdOut, (BACKGROUND_GREEN));

  printf("and we both have green background!\r\n");

可用属性列表可用here

【讨论】:

  • 没有办法只设置一个字为黄色吗?
  • 例如字符串“你已经赚了:”是白色的,而“$5000”是黄色的
  • 这似乎可以工作,但头文件抛出一堆错误,我无法运行应用程序
  • 什么头文件?什么错误?请更具体。
【解决方案2】:
#include <stdlib.h>

...
int main()
{
system("COLOR #");
...

#细分:

0 = 黑色,

1 = 蓝色,

2 = 绿色,

3 = 水色

等等……等等……

system("COLOR ##") // 这可以为控制台提供背景和前景色

我没有尝试过,但是您可以尝试在打印之前将颜色设置为黄色,然后在打印之后将其重置为默认值 例如:

#include <stdlib.h>

...
system("COLOR #");
printf("%s",money);
system("COLOR #");
...

【讨论】:

  • 我最初确实尝试过,并认为它会起作用,但它会改变整个窗口的背景和颜色
  • @Kyle Jensen 感觉可能会发生,但我认为 uri2x 有更好的解决方案
  • 作为注释,请在给出答案之前尝试您的代码。这正是@KyleJensen 所说的他所做的
猜你喜欢
  • 2020-01-18
  • 1970-01-01
  • 2020-10-06
  • 2019-08-29
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 2013-06-27
相关资源
最近更新 更多