1

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

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

所以我该怎么做 ?

4

4 回答 4

1

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

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

于 2017-10-25T06:37:35.070 回答
1

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

谷歌“ncurses教程”开始。它与conio.h不同,所以从头开始学习。

于 2017-10-25T06:36:49.183 回答
0

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

根据这个页面

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

进一步阅读:

于 2017-10-25T08:19:05.773 回答
0

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

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

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

的两种实现curses非常普遍:

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

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

为了学习如何使用cursesNCURSES Programming HOWTO是一个很好的资源。我个人向#include <curses.h>​​本 HOWTO 建议的所有地方推荐#include <ncurses.h>,因此您的代码无需修改即可与其他 curses 实现一起使用。

于 2017-10-25T07:20:01.707 回答