Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Двойственность символьных переменных

В некоторых системах при использовании функции putchar() вы должны включить в текст программы файл заголовков STDIO.H с помощью директивы #include. В этих системах функция putchar() является производной другой функции — putc(). Функция putc(), как вы увидите в главе 11, может направлять вы- вод на специальные устройства, такие как диск или принтер. Файл заголовков STDIO.H содержит инфор- мацию о том, как использовать функцию putc() для выполнения функции putchar().

Так как функция putc() может направлять вывод в дисковый файл, то ее использование (а соответствен- но, и применение функции putchar()) требует соблюдения определенных правил. Часть кодов, которые должны быть записаны в дисковый файл, не могут быть помещены в элемент памяти, отводимый для сим- вола. Для осуществления возможности использования этих кодов функции putc() и putchar() были сконст- руированы таким образом, чтобы они могли работать и с целочисленным типом данных. Компилятор само- стоятельно преобразует данные типа int в буквы, так что, имея дело с компиляторами, которые поддержи- вают стандарт K&R языка Си, можно писать программу следующим образом:

main()

{

int letter; letter='G'; putchar(letter);

}

Даже при том, что переменная letter определена как целочисленная, в качестве начального значения ей может быть присвоен символ. Программа при этом будет компилироваться и выполняться без ошибок.

Некоторые программисты остаются верны стандарту K&R и всегда используют функцию putchar() с пара- метром типа int. Право выбора остается за вами.

Управляющие коды

Вы можете управлять перемещением курсора на экране и выполнять некоторые другие функции, исполь- зуя специальные коды, называемые escape-последовательностями (escape sequences). Каждая последова- тельность начинается с символа обратной наклонной черты (\), который указывает на то, что символы, расположенные за ним, являются escape-символами (escape character). Обратная косая черта и escape- символы выражают операцию, которую вы хотите произвести. Когда компилятор встречает обратную ко- сую черту, он не отображает следующие символы, а выполняет действие, на которое они указывают.

Код «новая строка»

Последовательность \n, называемая кодом «новая строка», перемещает курсор в начальную позицию сле- дующей строки. Используйте код «новая строка» после вывода на экран символа с помощью функции putchar(). Если вы напишете следующие инструкции:

putchar('A');

putchar('\n');

то на экране отобразится символ A, а затем курсор перейдет в начало следующей строки. Отметим, что последовательность \n, как и другие символы, передаваемые функции putchar() в качестве параметра, заключена в одинарные кавычки. Так как буква n следует за обратной косой чертой, компилятор обеспе- чит перевод строки, а не станет отображать этот символ на экране.

При вызове функции puts() вы можете комбинировать escape-последовательность с символами внутри ка- вычек. Инструкция

puts("Уильям Уотсон\n");

отобразит имя Уильяма Уотсона на экране, а затем поместит курсор в начало следующей строки. Код «но-

вая строка» должен находиться внутри кавычек.

Если ваш компилятор автоматически выполняет перевод строки после выполнения функции puts(), тогда курсор будет переведен на две строки вниз. Опишем, как это происходит:

  1. Отображается имя Уильяма Уотсона.

  2. Код \n обеспечивает выполнение escape-последовательности «новая строка», перемещая курсор в начальную позицию строки, расположенной под именем.

  3. Выполнение функции puts() завершается. Если ваш компилятор добавляет перевод строки автома- тически, то курсор будет перемещен вниз еще на одну строку.

До сих пор код \n использовался нами в конце сроки, но он может располагаться в любом месте внутри кавычек. Инструкция

puts("A\nB\nC");

отобразит на экране три строки текста:

A B C

Почему? Последовательность действий такова: компилятор отобразит символ А, переместит курсор в на- чало новой строки, отобразит символ B, переместит курсор в начало следующей строки и отобразит сим- вол C. Если ваш компилятор добавляет перевод строки автоматически, то курсор будет переведен еще на одну строку ниже символа C.