Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс ПЯВУ 2 сем / Лекции 2 сем / Л№33 ФорматировВвод / Лекция № 31. Форматированный Ввод вывод .odt
Скачиваний:
16
Добавлен:
17.04.2015
Размер:
50.53 Кб
Скачать

23. Оператор printf - перенос символьной строки

При использовании в программе функции printf может оказаться, что выводимая функцией символьная строка не помещается на текущей строке исходного кода. В таких случаях следует поместить знак обратной наклонной черты (\) в конце текста на текущей строке, продолжив текст с начала следующей строки, как показано ниже:

printf("Эта строка слишком длинная и не может \

поместиться на одной строке.");

Примечание: При переносе текста не следует включать пробелы в начало текста на следующей строке. Если такие пробелы имеются, то они включаются Си-компилятором в текстовую строку.

24. Оператор printf - вывод текстовых строк по near- и far-указателям

В разделе "Управление памятью" near- и far-указатели (ближние и удаленные соответственно) обсуждаются достаточно подробно. При использовании в программе строковых far-указателей естественно возникают случаи, когда требуется вывести содержимое строки с помощью printf. Однако, как станет известно в дальнейшем из этой книги, при передаче,fаг-указателя функции, ожидающей короткий (near) адрес, происходит ошибка. Если все же требуется отобразить содержимое строки по ее far-указателю, то следует информировать функцию printf, что используется far-указатель. Для этого надо поместить прописную букву F (для far) сразу после символа %:

printf("%Fs\n", some_far_string);

В этом случае вызов функции printf будеткорректным. Аналогично можно информировать функцию printf, что ей передается строка с ближним (near) указателем, задавая прописную букву N. Однако, поскольку пеаг-указатели-подразумеваются по умолчанию, спецификаторы формата %Ns и %s означают одно и то же. В следующей программе NEAR_FAR.С показывается использование спецификаторов формата %Fs и %Ns:

#include <stdio.h>

void main()

{

char *near_title = "1001 совет по C/C++";

char far *far_title = "1001 совет по C/C++";

printf("Название книги: %Ns\n", near_title);

printf("Название книги: %Fs\n", far_title);

}

25. Оператор printf - работа с Esc-символами

При работе с символьными строками часто возникает потребность в использовании некоторых специальных символов, таких как табуляция, возврат каретки или перевод строки. Для обеспечения удобного включения таких символов в строки символов (предназначенные, например, для использования в printf) язык Си определяет набор так называемых Escape-символов (обозначаемых также Esc-символы). Например, во многих программах, представленных в этой книге, следующим образом используется символ перевода строки для продолжения вывода с начала новой строки:

printf("Строка 1\nСтрока 2\nСтрока З") ;

В табл. 1представлены Esc-символы, которые могут быть использованы в символьных строках (и, следовательно, в выводе printf).

Таблица 1. Esc-символы, определенные в Си

Esc-символ Назначение

\а ASCII-символ звукового сигнала

\b Возврат на символ

\f Символ перевода формата

\n Символ перевода строки

\r Символ возврата каретки

\t Горизонтальная табуляция

\v Вертикальная табуляция

\\ Символ обратная наклонная черта

\' Апостроф

\" Кавычки

\? Знак вопроса

\nnn ASCII-значение в восьмиричном виде

\xnnn ASCII-значение в шестнадцатиричном виде