Студопедия

КАТЕГОРИИ:


Архитектура-(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

\v

\\



0х09

0х0В

0х5С


Табуляция

Вертикальная табуляция Обратная черта


 


\'



0х2С


Апостроф


 


\"



0х22


Кавычка


 


\?



0х3 F


Знак вопроса


 


\0

\XHHH и \xhhh


0xhhh


Восьмеричное число, от 1 до 3 цифр

Шестнадцатеричное число


Функция 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 X P результат
Символ Один символ
  Десятичное целое со знаком
  Десятичное целое со знаком
  Восьмеричное целое без знака
  Десятичное целое без знака
  Шестнадцатеричное целое без знака; набор цифр - 0123456789abcdef
  Шестнадцатеричное целое без знака; набор цифр -0123456789ABCDEF
Указатель Для указателей 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, используя три различных набора спецификаций преобразования.

Листинг 3. Исходный текст программы OUT2.CPP в файле List7-3.CPP

<== предыдущая лекция | следующая лекция ==>
Форматированный потоковый вывод | Формата я преобразования
Поделиться с друзьями:


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


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



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




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