Читайте также: |
|
Вы можете управлять перемещением курсора на экране и выполнять некоторые другие функции, используя специальные коды, называемые escape-последовательностями (escapesequences). Каждая последовательность начинается с символа обратной наклонной черты (\), который указывает на то, что символы, расположенные за ним, являются escape-символами (escapecharacter). Обратная косая черта и escape-символы выражают операцию, которую вы хотите произвести. Когда компилятор встречает обратную косую черту, он не отображает следующие символы, а выполняет действие, на которое они указывают.
Код «новая строка»
Последовательность \n, называемая кодом «новая строка», перемещает курсор в начальную позицию следующей строки. Используйте код «новая строка» после вывода на экран символа с помощью функции putchar(). Если вы напишете следующие инструкции:
putchar('A'); putchar('\n');то на экране отобразится символ A, а затем курсор перейдет в начало следующей строки. Отметим, что последовательность \n, как и другие символы, передаваемые функции putchar() в качестве параметра, заключена в одинарные кавычки (апострофы). Так как буква n следует за обратной косой чертой, компилятор обеспечит перевод строки, а не станет отображать этот символ на экране.
При вызове функции puts() вы можете комбинировать escape-последовательность с символами внутри кавычек.
Инструкция
puts("Уильям Уотсон\n");отобразит имя Уильяма Уотсона на экране, а затем поместит курсор в начало следующей строки. Код «новая строка» должен находиться внутри кавычек.
Если ваш компилятор автоматически выполняет перевод строки после выполнения функции puts(), тогда курсор будет переведен на две строки вниз. Опишем, как это происходит:
До сих пор код \n использовался нами в конце сроки, но он может располагаться в любом месте внутри кавычек. Инструкция
отобразит на экране три строки текста:
A B CПочему? Последовательность действий такова: компилятор отобразит символ А, переместит курсор в начало новой строки, отобразит символ B, переместит курсор в начало следующей строки и отобразит символ C. Если ваш компилятор добавляет перевод строки автоматически, то курсор будет переведен еще на одну строку ниже символа C.
Код «табуляция»
Код «табуляция» \t перемещает курсор в следующую позицию табуляции экрана. Чтобы посмотреть, как работает код «табуляция», воспользуемся следующей программой:
main(){puts("123456789012345678921234567893123456789412345\n");puts("0\t1\t2\t3\t4\t5\n");}Она отображает строку цифр, чтобы вы могли рассчитать позиции табуляции, а затем отображает строку с цифрой 0 в крайней левой позиции экрана и цифры от 1 до 5, показывающие позиции табуляции экрана.
123456789012345678921234567893123456789412345 0 1 2 3 4 5
Код «табуляция» можно использовать для создания выровненных колонок текста или чисел, например, так:
main(){puts("Друзья, суммы долгов и сроки задолженностей:\n");puts("Алан\t\tДжефф\t\tНэнси\t\tТом\n");puts("$1.50\t\t$2.45\t\t$6.24\t\t$3.56\n");puts("10 дней\t\t5 дней\t\t15 дней\t\t1 день\n");}Результат работы этой программы представлен на рис.1. Заметьте, что мы использовали по два кода «табуляция» между колонками, чтобы отчетливо разделить их на экране. Также обратите внимание на отсутствие пробелов между кодом «табуляция» и следующим за ним текстом, так как любые дополнительные пробелы отобразятся на экране, и колонки не будут выровнены правильно.
Рис.1. Результаты работы программы, использующей коды «табуляция»
Код «возврат каретки»
Код «возврат каретки» \r выполняет «возврат каретки», перемещая курсор к началу той же строки без перехода на следующую. Если вы вывели на экран какую-то информацию, перевели курсор назад к началу этой строки и затем вывели на экран другую информацию, то старое сообщение стирается, а на его месте появляется новое.
Рис.2 иллюстрирует различия между escape-последовательностями «возврат каретки» и «новая строка». Когда вы работаете с клавиатурой, нажатие клавиши Enter производит действие, аналогичное тому, что в языке Си называется новой строкой. Некоторые программисты называют это комбинацией возврата каретки и перевода строки, сокращенно CR/LF (от английского carriagereturn/linefeed). Использование кода «возврат каретки» в языке Си не приводит к переходу на новую строку.
Рис.2. Различия между кодами «возврат каретки» и «новая строка»
Действие кода \r можно видеть на примере следующей инструкции:
puts("Левый\rПравый");В результате ее выполнения на экране появится только слово «Правый». И вот почему: после отображения на экране слова «Левый», код \r переводит курсор в начало этой строки, и при отображении слова «Правый» составляющие его символы замещают собой символы слова «Левый». Код \r сам по себе не уничтожает выведенные на экран символы, когда возвращает курсор, и только вывод новых символов после возврата курсора стирает уже существующий текст.
Код «возврат на шаг»
В отличие от кода \r, который возвращает курсор в начало строки, код «возврат на шаг» \b передвигает курсор только на одну позицию влево. При перемещении курсора существующие символы не уничтожаются, как и при возврате каретки.
Если вы используете коды «возврат каретки» или «возврат на шаг», а затем вводите код «новая строка», курсор переходит к следующей строке, не уничтожая существующий текст.
Код «перевод страницы»
Когда вы посылаете информацию на печатающее устройство, код «перевод страницы» \f вытягивает из него текущую страницу. Этот код распознается большинством принтеров.
После вывода сообщения на печать, большинство программистов использует код «перевод страницы», чтобы быть уверенными в том, что страница с последним сообщением готова и на нее не будет печататься другая информация. Если вывести изображение этого кода на экран при помощи функции puts() или putchar(), он появится в виде маленького графического символа, который никак не влияет на остальную информацию, отображаемую на дисплее.
Дата добавления: 2015-07-11; просмотров: 73 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лабораторная работа 2 | | | Отображение специальных символов на экране монитора |