Студопедия

КАТЕГОРИИ:


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

Функция printf стандартной библиотеки предназначена для форматного вывода данных и имеет следующий прототип:

int printf (char *format, arg1, arg2,...);

Функция printf преобразует, форматирует и печатает свои аргументы arg1, arg2 и т.д. в стандартном выводе (обычно на экране) в соответствии с информацией, заданной аргументом format, и возвращает количество напечатанных символов.

Форматная строка format содержит два вида объектов: обычные символы, которые непосредственно копируются в выходной поток, и спецификации преобразования, каждая из которых вызывает преобразование и печать очередного аргумента функции printf. Любая спецификация преобразования начинается знаком % и заканчивается символом-спецификатором. Между знаком % и символом-спецификатором могут быть расположены (в указанном ниже порядке) следующие элементы:

· Знак минус, предписывающий «прижать» преобразованный аргумент к левому краю поля.

· Число, задающее минимальную ширину поля. Преобразованный аргумент будет занимать поле по крайней мере указанной ширины. При необходимости лишние позиции слева (или справа при левостороннем выравнивании) будут заполнены пробелами.

· Точка, отделяющая ширину поля от величины, устанавливающей точность.

· Число (точность), задающее максимальное количество печатаемых символов строки, или количество цифр после десятичной точки – для плавающего значения, или минимальное количество цифр – для целого значения.

· Буква h, если печатаемое целое должно рассматриваться как short, или l (латинская буква «эль»), если целое должно рассматриваться как long.

 

Перечень символов-спецификаторов и задаваемые ими преобразования вывода

Символ-спецификатор Тип аргумента Вид печати
d, i int Десятичное целое
O int Беззнаковое восьмеричное целое (без ведущего нуля)
x, X int Беззнаковое шестнадцатиричное целое (без ведущих и ), для 10,11, …,15 используются abcdef или ABCDEF
u int Беззнаковое десятичное целое
C int Одиночный символ
S char * Печатаются символы, расположенные до нуль-символа (‘’), или в количестве, заданном точностью
F double [ - ]m.dddddd, где количество цифр d задается точностью (по умолчанию равно 6)
e, E double [ - ]m.dddddde±xx или [ - ]m.ddddddE±xx, где количество цифр d задается точностью (по умолчанию равно 6)
g, G double Применяется %e или %E, если порядок меньше, чем -4, или больше или равен точности; в противном случае применяется %f. «Хвостовые» нули и «хвостовая» десятичная точка не печатаются
P void * Указатель (представление зависит от реализации)
%   Печатается знак %

 

Функция scanf стандартной библиотеки предназначена для форматного ввода данных и имеет следующий прототип:

int scanf (char *format, arg1, arg2,...);

Функция scanf читает символы из стандартного входного потока (обычно с клавиатуры), интерпретирует их согласно спецификациям строки format и рассылает результаты в свои аргументы arg1, arg2 и т.д. Эти аргументы, каждый из которых должен быть указателем, определяют, где будут запоминаться должным образом преобразованные данные.

Функция scanf прекращает работу, когда оказывается, что исчерпался формат или вводимая величина не соответствует управляющей спецификации. В качестве результата scanf возвращает количество успешно введенных элементов данных. Каждое очередное обращение к scanf продолжает ввод с символа, следующего сразу за последним обработанным. При необходимости можно очистить входной поток от содержащихся в нем данных с помощью оператора:

fflush(stdin);

Строка format, управляющая преобразованиями ввода, может включать в себя следующие элементы:

· Пробелы или табуляции, которые игнорируются.

· Обычные литеры (исключая %), которые, как ожидается, совпадут с очередными непробельными символами входного потока.

· Спецификации преобразования, каждая из которых начинается со знака % и завершается символом-спецификатором типа преобразования. В промежутке между ними могут располагаться, причем в указанном здесь порядке: знак * (признак подавления присваивания); число, определяющее ширину поля; буква h, l или L, указывающая на размер получаемого значения.

 

Перечень символов-спецификаторов и задаваемые ими преобразования ввода

Символ-спецификатор Вводимые данные Тип аргумента
d Десятичное целое int *
i Целое, которое может быть восьмеричным (с ведущим 0) или шестнадцатиричным (с ведущими или ) int *
o Восьмеричное целое (с ведущим нулем или без него) int *
u Беззнаковое десятичное целое unsigned int *
x Шестнадцатиричное целое (с ведущими или или без них) int *
c Следующие символы ввода (по умолчанию один) размещаются в указанном месте. Пробельные символы не пропускаются; чтобы прочесть очередной символ, отличный от пробельного, используйте %1s char *
s Строка символов (без обрамляющих кавычек). Завершающий нуль-символ (‘’) будет добавлен char *
e, f, g Число с плавающей точкой, возможно со знаком; обязательно присутствие либо десятичной точки, либо экспоненциальной части, а возможно, и обеих вместе float *
% Сам знак %, никакое присваивание не выполняется  

 

Перед символами-спецификаторами d, i, o, u, x может стоять буква h, указывающая на то, что соответствующий аргумент должен иметь тип short * (а не int *), или l (латинская «эль»), указывающая на тип long *. Аналогично, перед символами-спецификаторами e, f, g может стоять буква l, указывающая, что тип аргумента – double * (а не float *).

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


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


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



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




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