我想在 UBUNTU(terminal) 中使用 setfillstyle() 和 textcolor() 。
但我在互联网上发现它存储在 conio.h 库中,不能在 UBUNTU 中使用。
所以我该怎么做 ?
确实如此。setfillstyle
并且textcolor
是旧 conio MS/DOS 库的函数。它现在只能在 Windows 控制台中使用(除非您设法使用真正的 MS/DOS 或 FreeDOS...)。
如果您想在 Linux 终端窗口中使用颜色效果,您可以查看通常存在于 Ubuntu 中并允许创建可移植程序的 curses。
今天在 unixy 终端上做这些事情的事实上的方法是使用一些Curses 库,在 Ubuntu 上是由 GNU 项目开发的Ncurses 库。
谷歌“ncurses教程”开始。它与conio.h不同,所以从头开始学习。
正如建议的那样,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
进一步阅读:
首先,控制一个“屏幕”(或者你想怎么称呼它)不在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)
为了学习如何使用curses
NCURSES Programming HOWTO是一个很好的资源。我个人向#include <curses.h>
本 HOWTO 建议的所有地方推荐#include <ncurses.h>
,因此您的代码无需修改即可与其他 curses 实现一起使用。