【问题标题】:How to use setfillstyle() and textcolor() in C如何在 C 中使用 setfillstyle() 和 textcolor()
【发布时间】:2018-04-06 03:04:42
【问题描述】:

我想在 UBUNTU(terminal) 中使用 setfillstyle() 和 textcolor() 。

但我在网上发现它存储在 conio.h 库中,不能在 UBUNTU 中使用。

那我该怎么办?

【问题讨论】:

  • 我删除了您关于 inportb 的第二个问题。如果你想问这个,问一个单独的问题。你可能应该告诉你你想做什么,在 MSDOS 中使用inportb 展示你将如何做到这一点,并询问如何在 Ubuntu 中做到这一点(因为做到这一点的方式将完全不同,或者甚至可能不写就不可能内核驱动程序...)。

标签: c terminal ncurses conio


【解决方案1】:

今天在 unixy 终端上做这些事情的实际方法是使用一些 Curses libray,在 Ubuntu 上是由 GNU 项目开发的 Ncurses library

Google 上的“ncurses 教程”开始使用。它与 conio.h 不同,所以从头开始学习吧。

【讨论】:

  • 在诅咒什么是'setfillstyle'和'textcolor'的替代功能
  • @Koolman 我想是attron。但整个图书馆有点不同。与其思考哪个函数对应于哪个函数,不如思考“这就是我使用 conio.h 显示内容的方式,如何使用 ncruses 实现相同的显示?”
【解决方案2】:

确实如此。 setfillstyletextcolor 是旧 conio MS/DOS 库的函数。它现在只能在 Windows 控制台中使用(除非您设法使用真正的 MS/DOS 或 FreeDOS...)。

如果您想在 Linux 终端窗口中使用颜色效果,您可以查看通常存在于 Ubuntu 中并允许创建可移植程序的 curses。

【讨论】:

  • 在诅咒什么是'setfillstyle'和'textcolor'的替代功能
【解决方案3】:

首先,控制一个“屏幕”(或者你想怎么称呼它)在 C 的范围内。CI/O (stdio.h) 只对输入和输出进行操作流。因此,您要么必须自己编写特定于平台的代码,要么使用库。

关于conio.h,正如其他答案已经指出的那样,这是一个过时的标题。它是为 MS-DOS (由 Borland 为其 TurboC 产品创建的 AFAIK)创建的,因此在设计上与带有 BIOS 例程的文本模式的典型 PC 提供的功能强耦合。尽管您可能会在 MS-DOS 以外的其他系统中找到 一些 实现,但我强烈建议不要使用它。

现在控制控制台/终端的事实上的标准确实是curses,它首先出现在Unix系统上。它是商业系统的一部分,但存在各种系统的免费实现。使用curses,您的代码将可移植到许多系统,包括几乎所有 *nix 衍生产品以及 Windows。

curses 的两种实现非常普遍:

  • ncurses 来自 GNU 项目,它可以移植到许多 *nix 系统,最近也可以移植到 Windows(我推荐它用于 Linux、FreeBSD 等)

  • pdcurses 也是可移植的,但侧重于 DOS 和 Windows(我推荐它用于 Windows)

对于学习如何使用cursesNCURSES Programming HOWTO 是一个很好的资源。我个人向​​#include <curses.h> 推荐这个HOWTO 建议#include <ncurses.h> 的所有地方,这样你的代码就可以在不修改的情况下与其他curses 实现一起使用。

【讨论】:

  • 在诅咒什么是'setfillstyle'和'textcolor'的替代功能
  • @Koolman 没有 1:1 的映射,你应该认真阅读 HOWTO。
【解决方案4】:

正如建议的那样,ncurses 是开始使用 Ubuntu 的常用位置。

根据this page

setfillstyle 函数设置当前的填充图案和填充颜色。

并继续列出可用的填充样式:

enum fill_styles 
{ 
   EMPTY_FILL, 
   SOLID_FILL, 
   LINE_FILL, 
   LTSLASH_FILL, 
   SLASH_FILL,
   BKSLASH_FILL, 
   LTBKSLASH_FILL, 
   HATCH_FILL, 
   XHATCH_FILL, 
   INTERLEAVE_FILL,
   WIDE_DOT_FILL, 
   CLOSE_DOT_FILL, 
   USER_FILL 
};

填充模式没有可移植的等价物(它取决于终端类型)。根据您的需要,<conio.h> 用于为全屏命令行 应用程序着色。对于后者,您有 tput(一个 curses 实用程序),它可以设置前景色和/或背景色。

对于前者,ncurses 实现了 X/Open 背景字符,可以在全屏应用程序中使用它来提供填充字符和/或颜色。您可以使用 背景字符 来模仿 conio 的填充样式(尽管我还没有看到有人为这些字符制作相应的 Unicode 值表)。 EMPTY_FILL 很简单:只是一个空格字符。

进一步阅读:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多