- •1. Введение.
- •2. Общие положения.
- •3. Форматирование ввода-вывода средствами языка с
- •4. Функция printf()
- •6. Оператор printf - вывод целых чисел в восьмиричном и
- •10. Оператор printf - вывод значений типа char
- •11. Оператор printf - вывод чисел с плавающей точкой в
- •12. Оператор printf - вывод чисел с плавающей точкой в
- •13. Оператор printf - вывод текстовых строк
- •15. Оператор printf - вывод значений со знаком
- •16. Оператор printf - форматирование вывода целого значения
- •18. Оператор printf - вывод префикса перед восьмиричными и
- •19 . Оператор printf - форматирование чисел с плавающей точкой
- •20. Оператор printf - форматирование экспоненциального представления
- •21. Оператор printf - вывод с выравниванием слева
- •22. Оператор printf - комбинирование спецификаторов формата
- •23. Оператор printf - перенос символьной строки
- •24. Оператор printf - вывод текстовых строк по near- и far-указателям
- •25. Оператор printf - работа с Esc-символами
- •26. Оператор printf - определение количества выводимых символов
- •27. Оператор printf - использование возвращаемого значения
- •28. Ansi-драйвер
- •29. Использование ansi-драйвера для очистки экрана
- •30. Использование ansi-драйвера для управления цветом на экране
- •31. Использование ansi-драйвера для позиционирования курсора
- •33.Ввод и вывод одного символа
- •35.Буферы
- •36. Чтение одной строки
- •37. Функции ввода-вывода символов
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-значение в шестнадцатиричном виде