Больше контроля над стандартным выводом C - PullRequest
3 голосов
/ 13 июля 2009

Я не могу найти правильный способ задать вопрос всемогущему Google ...

В таких программах, как индикатор выполнения командной строки, буфер вывода, по-видимому, управляется напрямую. Он не может печатать символ в терминале в любом месте, где он хочет. Как такой контроль над выходом программы контролируется в стандарте C? Есть ли специальная библиотека, которую я могу найти?

Ответы [ 6 ]

5 голосов
/ 13 июля 2009

посмотрите на проклятия это библиотека для Unix / Linux

3 голосов
/ 13 июля 2009

Вы можете сделать индикатор выполнения с помощью \ r check this

для более сложных вещей вы можете использовать ncurses

3 голосов
/ 13 июля 2009

Если вы просто хотите индикатор выполнения, вы можете просто напечатать один 'X' для каждых 2% выполнения. Это должно заполнить 50 символов в строке.

Если вы хотите что-то более необычное, в Linux вы можете попробовать классическую библиотеку curses, или если вы просто хотите диалоговое окно, вы можете попробовать библиотеку, которую используют утилиты установки Debian, но я забыл ее название. 1003 *

2 голосов
/ 13 июля 2009

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

0 голосов
/ 13 июля 2009

Вы можете использовать Экранирующее кодирование ANSI для управления конечным выходом. Это то, как многие игры MUD выдают результат.

0 голосов
/ 13 июля 2009

Большая горилла здесь - это библиотека ncurses, но вы можете делать много интересных вещей с меньшими затратами на обучение. Попробуйте с помощью \r перейти к началу строки и с помощью простых управляющих последовательностей очистить до конца строки, включить и выключить жирный шрифт и так далее. Команда tput(1) неоценима. Например, я написал простое приложение, которое делает выделенный текст, и чтобы включить или выключить выделение, я просто вызвал команды tput smso и tput rmso. Вы можете захватить результаты, используя C с popen(3); использовать оболочку еще проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...