Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функция printf




Функция printf

Просматривая программы, написанные разными людьми, вы часто можете встретить функцию printf. Этот стандартный оператор вывода пришел из языка С. Так как C++ является расширением С, эта функция поддерживается и в этом языке. Многие программисты до сих пор предпочитают использовать старую функцию printf, а не потоки ввода/вывода C++. Вот почему вам эта функция наверняка уже знакома. Но, помимо этого, эта функция имеет не­сколько очень мощных возможностей, и в ряде случаев она оказывается удоб­нее функций потоков. Прототип функций можно найти в заголовочном файле STDIO.H.

Общая форма объявления функции printf:

int printf(const char *format[, argument,... ]);

Параметр format является символьным массивом, содержащим вы­водимый текст. Кроме этого обязательного параметра, могут быть необя­зательные аргументы. Массив format может содержать специальные форматирующие символы, которые выполняют преобразование необяза­тельных аргументов при выводе.

Функция printf является очень мощной функцией с богатыми возмож­ностями форматирования вывода. В качестве первого шага в освоении ее возможностей рассмотрим Esc-последовательности, позволяющие представ­лять специальные символы. Esc-последовательность начинается с символа «\» — «обратная косая черта». Esc-коды представлены в таблице 1.

Таблица 1. Еsс - последовательности

Последовательность Десятичное значение Шестнадцатеричное значение Название
  0х07 Звонок
\b   0х08 Возврат назад
\f   0х0С Перевод страницы
\n   0х0А Новая строка
  0x0D Возврат каретки
\t   0х09 Табуляция
\v   0х0В Вертикальная табуляция
\\   0х5С Обратная черта
\'   0х2С Апостроф
\"   0х22 Кавычка
\?   0х3 F Знак вопроса
\0     Восьмеричное число, от 1 до 3 цифр
\XHHH и \xhhh   0xhhh Шестнадцатеричное число

 

Функция printf имеет специальные форматирующие спецификации (сим­волы) для вывода переменных. Общий вид этих спецификаций таков:

% [flags] [width] [.precision] [F | N | h | l | L ] <символ типа>

Опции flags могут определять выравнивание, отображение знака числа при выводе, вывод десятичной точки и символов заполнения. Кроме того, эти флаги определяют префиксы для восьмеричных и шестнадцатеричных чисел. Воз­можные значения флагов приведены в таблице 2.

Таблица 7.2. Значения флагов строки формата функции printf

Символ Назначение
- Выравнивать вывод по левому краю поля
+ Всегда выводить знак числа
Пробел Выводить пробел перед положительным числом и знак минус — перед отрицательным
# Не влияет на вывод десятичных целых, для шестнадцатеричных чисел выводит префикс 0х или 0Х, перед восьмеричными целыми выводит ноль, десятичную точку для вещественных чисел.

 

Спецификация width определяет минимальное количество выводимых символов. Если необходимо, используются заполнители — пробелы или нули. Когда значение для width начинается с нуля, printf использует в качестве заполнителей нули, а не пробелы. Если в качестве значения для width используется универсальный символ *, а не число, то printf подставляет на место этого символа значение, которое должно содержаться в списке аргументов. Это значение ширины поля должно предшествовать выводимому значению. Ниже приведен пример вывода числа 2, занимающего три позиции, согласно значе­нию второго аргумента printf:

printf("%*d", 3, 2);

Спецификатор precision определяет максимальное количество выводимых цифр. В случае целого числа он определяет минимальное количество выво­димых символов. Для precision также можно применить символ *, вместо которого будет подставлено значение из списка аргументов. Это значение точности представления должно предшествовать выводимому значению. Ниже приведен пример вывода числа с плавающей точкой 3.3244 с использованием десяти символов, как это задано вторым аргументом printf:

printf("%7.*f", 10, 3.3244);

Символы F, N, h, l и L являются символами размера, переопределяющими размер по умолчанию. Символы F и N применяются с указателями, far и near соответственно. Символы h, l, и L используются для указания соответ­ственно типов short int, long или long double.

Символам типа данных должен предшествовать форматирующий символ %. В таблице 7.2 мы показали возможные значения флагов форматирующей строки printf. Символы типов данных перечислены в таблице 7.3.

Таблица 3. Символы типов данных строки формата функции printf

Тип данных символ типа результат
Символ c Один символ
  d Десятичное целое со знаком
  i Десятичное целое со знаком
  O Восьмеричное целое без знака
  N Десятичное целое без знака
  X Шестнадцатеричное целое без знака; набор цифр - 0123456789abcdef
  X Шестнадцатеричное целое без знака; набор цифр - 0123456789ABCDEF
Указатель P Для указателей near выводит только смещение в виде: 0000. Указатели far отображаются в виде: SSSS:0000
Указатель на целое N  
Вещественное F Выводит величину со знаком в формате [-]dddd.dddd
  E Выводит вещественную величину со знаком в экспоненциальном формате [-]d.dddde[+|-]ddd
  Е Выводит вещественную величину со знаком в экспоненциальном формате [-]d.ddddE[+|-]ddd
  G Выводит вещественную величину со знаком в формате f или е в зависимости от ее значения и заданной точности
  G Выводит вещественную величину со знаком в формате F или Е в зависимости от ее значения и заданной точности
Указатель S Выводит строку символов, пока не встретит нуль-терминатор строки

 

Разберем небольшой пример. Программа OUT2.CPP, исходный код ко­торой приведен в листинге 3, создана на основе программы OUT1.CPP. В этой программе используется форматированный вывод с использованием функции printf. Программа выводит те же числа, что и OUT1.CPP, используя три различных набора спецификаций преобразования.




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 556; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.