【问题标题】:Colors not working with printf in .exe file, but working in Visual Studio?颜色不适用于 .exe 文件中的 printf,但可以在 Visual Studio 中使用?
【发布时间】:2021-05-11 11:14:30
【问题描述】:

这是输出的图片(左边是 .exe,右边是 Visual Studio。] 我正在尝试制作一个井字游戏程序,当我在 Visual Studio 中运行它时,它显示正常并且没有错误。但是,当我尝试运行由 VS 编译器生成的 .exe 文件时,而不是 彩色 X 和 O 它只显示它应该是的 ansi 颜色代码。有谁知道我将如何解决这个问题,或者可能是什么原因?

我是这样定义颜色的:

#define ANSI_COLOR_CYAN    "\x1b[36m"
#define ANSI_COLOR_RESET   "\x1b[0m"

这是我的一个 printf 调用示例:

printf(ANSI_COLOR_RED"\nYOU LOST. BETTER LUCK NEXT TIME...\n\n");
printf(ANSI_COLOR_RESET);

【问题讨论】:

  • Howzit,你现在是如何在你的应用中设置颜色的?
  • 提供一些代码,以便更好更快地获得帮助。
  • 好的,我会添加我的颜色定义代码和我对 printf 的调用。
  • 您的 Windows 控制台没有终端仿真。

标签: c windows visual-studio


【解决方案1】:

颜色转义码由您的终端解释。这是寻找解决此问题的地方。 Here 是 Windows 中 ansi 颜色代码使用的概述,它似乎应该可以工作,但需要对旧版本进行一些修复:

在旧版本的 Windows 中启用 ANSI 颜色 要在 Windows 终端中使用 ANSI 颜色,需要设置 VirtualTerminalLevel。 VirtualTerminalLevel = 1 现在默认为终端和 ConPTY 设置。 在 Windows 版本 1511 到 1903 中,必须在注册表中启用此功能:

[HKEY_CURRENT_USER\控制台] "VirtualTerminalLevel"=dword:00000001

也可以通过调用带有 ENABLE_VIRTUAL_TERMINAL_PROCESSING 标志的 SetConsoleMode API 来启用它。

【讨论】:

  • 它没有说“旧”,它说“旧”。提及的所有版本(1511 到 1903)都是 Windows 10 版本。
【解决方案2】:

我可以通过将此网站上的 ansi_escapes.h 和 ansi_escapes.c 文件添加到我的 Visual Studio 项目中,然后重新构建程序来使其正常工作。 here's the website with the files

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 2017-10-12
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多