Как использовать 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
это просто: просто космический персонаж.
Дальнейшее чтение:
tput
,reset
- инициализировать терминал или запрос к базе данных terminfobkgrnd
,wbkgrnd
,bkgrndset
,wbkgrndset
,getbkgrnd
,wgetbkgrnd
- ругает окно сложных подпрограмм обработки фона- тестовые / примеры программ (несколько используют фоновый символ)
Прежде всего, управление "экраном" (или как вы хотите его называть) не входит в сферу 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 без изменений.