пока не встретится первая буква. Буква определяет действие, которое нужно предпринять, с учетом данных в параметрах. В данном случае имеется один параметр 1
, а буква m
означает, что параметр используется для определения 1
устанавливает атрибут полужирного шрифта.
7. Распечатывается строка bold
в полужирном представлении.
8. Далее идет другая последовательность изображения символов, которая восстанавливает все стандартные атрибуты, поэтому строка word
выводится в обычном изображении.
9. В завершение встречается и обрабатывается еще один символ новой строки.
Таким образом, считая, что курсор находился в начале строки, выходные данные полностью будут выглядеть примерно так:
this is a line
a bold word
21.3.1. Управляющие символы
Консоль считывает управляющие символы незамедлительно, действует в соответствии с ними и затем продолжает считывать символы в нормальном режиме.
В файлах и документации termcap
и terminfo
управляющие символы изображаются символом ^c
. Мы будем часто в данной книге использовать это условное обозначение, поскольку оно более универсально и удобно для вас, чем восьмеричные управляющие последовательности С. Для отыскания числового значения управляющего символа в некоторых системах предусмотрен макрос CTRL()
в <termios.h>
, но он не является стандартным для всех систем.
В качестве замены мы предлагаем нашу собственную версию CTRLCHAR()
.
#define CTRLCHAR(ch) ((ch)&0x1F)
Она используется так:
if (с == CTRLCHAR('С')) {
/* был нажат символ Control-C */
}
Управляющие символы, воспринимаемые консолью Linux, описаны в табл. 21.1. Символ ^?
фактически представляет собой '?'+0100
, а не '?'-0100
, поэтому это не настоящий управляющий знак вопроса, но в любом случае стандартное обозначение для него ^?
. Его значение есть 0177 (восьмеричное), 127 (десятичное), 7F (шестнадцатеричное). Вы не сможете использовать макрос CTRL
, описанный только что, для проверки. Вместо этого придется применять числовое значение 127.
Таблица 21.1. Символы управления консолью
Управляющий символ | Имя ASCII | Описание |
---|---|---|
^G | BEL | Выдает тональный сигнал. |
^Н | BS | Курсор перемещается к предыдущему символу, не перезаписывая его (если только курсор не находится в первой колонке). |
^I | НТ | Горизонтальная табуляция; курсор перемещается к следующей точке табуляции. |
^J | LF | Новая строка; курсор перемещается на следующую строку; если курсор уже находился в самой нижней точке области прокручивания, то она продвигается вверх. |
^K | VT | Вертикальная табуляция; интерпретируется так же, как новая строка. |
^L | FF | Подача страницы; интерпретируется так же, как новая строка. |
^М | CR | Возврат каретки; курсор перемещается в начало текущей строки. |
^N | SO | Сдвиг; используется альтернативный (G1 ) символ, установленный для отображения глифов; изображаются глифы для управляющих символов. |
^O | SI | Сдвиг; используется стандартный (G0 ) символ, установленный для отображения глифов; не изображаются глифы для управляющих символов. |
^X | CAN |