Как использовать setfillstyle() и textcolor() в C

Я хочу использовать setfillstyle() и textcolor() в UBUNTU(терминал) .

Но я обнаружил в интернете, что он хранится в библиотеке conio.h, которую нельзя использовать в UBUNTU .

И что же мне делать?

4 ответа

Де-факто способ сделать это на Unixy-терминалах сегодня - это использовать библиотеку Curses, которая в Ubuntu - библиотека Ncurses, разработанная GNU Project.

Google для "ncurses tutorial", чтобы начать. Он отличается от conio.h, поэтому просто изучите его с нуля.

Это правда. setfillstyle а также textcolor являются функциями старой библиотеки conio MS/DOS. В настоящее время его можно использовать только в консолях Windows (если только вам не удастся использовать настоящую MS / DOS или FreeDOS...).

Если вы хотите использовать цветовой эффект в окне терминала Linux, вы можете взглянуть на проклятия, которые обычно существуют в Ubuntu и позволяют создавать переносимые программы.

Как и предполагалось, 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 (AFAIK от Borland для их продукта TurboC), и в результате он прочно связан с тем, что обеспечивает типичный ПК в текстовом режиме с подпрограммами BIOS. Хотя вы, вероятно, найдете некоторые реализации этого для других систем, кроме MS-DOS, я настоятельно рекомендую не использовать его.

Стандарт де-факто в настоящее время для управления консолью / терминалом действительно curses, который впервые появился в системах Unix. Это была часть коммерческой системы, но существуют бесплатные реализации для различных систем. С помощью cursesВаш код будет переносимым на многие системы, включая практически все производные *nix, а также Windows.

Две реализации curses очень распространены:

  • ncurses из проекта GNU, он переносим на многие системы *nix, а в последнее время и на Windows (я бы порекомендовал его для Linux, FreeBSD и т. д.)

  • pdcurses, который также переносим, ​​но с акцентом на DOS и Windows (я бы порекомендовал его для Windows)

Для обучения, как использовать curses, HURTO по программированию NCURSES - отличный ресурс. Я лично рекомендую #include <curses.h> везде этот HOWTO предлагает #include <ncurses.h>Таким образом, ваш код может быть использован с другими реализациями curses без изменений.

Другие вопросы по тегам