Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_03_Тема_03.doc
Скачиваний:
35
Добавлен:
21.05.2015
Размер:
532.99 Кб
Скачать

4 Функции форматированного ввода/вывода printfиscanf

Для подключения к программе описаний средств ввода-вывода из стандартной библиотеки компилятора можно использовать директиву

#include<stdio.h>.

Файл stdio.h(от англ.standardinput/outputheader- стандартный заголовочный файл ввода/вывода) - заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода.

Функция printf() выполняет форматируемый вывод в стандартный поток stdout. Это означает, что значения переменных, которые хранятся в памяти в двоичном виде, при выводе в поток (на экран) переводятся в символьный вид, причем вид преобразования задается спецификатором формата. Спецификаторы формата задаются как составная часть обязательного первого аргумента - форматной строки. После форматной строки задается список выражений, значения которых должны выдаваться на экран. В качестве выражений допускается задавать и переменные. Функция возвращает количество выведенных символов. Если произошел сбой, то возвращается отрицательное значение.

Спецификатор формата начинается символом % (процент), вслед за которым прописывается код формата. Количество аргументов-переменных должно в точности соответствовать количеству спецификаторов формата. При отсутствии списка переменных функция просто выводит в поток (на экран) форматную строку.

Спецификация формата имеет следующий вид:

%[флаг][ширина][.точность][h|l|L]тип

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

%тип

Тип задается одной буквой (см. ниже), и определяет, в каком виде предстанет значение переменной в потоке (на экране). Так как знак процента % используется как управляющий, то для вывода его в поток надо прописать его в форматной строке дважды %%.

Некоторые типы спецификаторов формата

c – Символ

s – Строка символов

d, i – Целое десятичное со знаком

o – Целое восьмеричное

u – Целое десятичное без знака

x, X – Целое шестнадцатеричное

f – Дробное число в фиксированном формате

e, E – Дробное число в научном формате

g, G – Дробное число в научном или фиксированном формате

p – Указатель (в шестнадцатеричном виде)

Ширина показывает, сколько символов будет выведено в поток. В это число входят все символы: и знак, и десятичная точка для дробных чисел. Если ширина окажется фактически меньше, чем требуется для вывода, то все равно значение выводится полностью. Точность задает количество цифр дробной части и применяется обычно только для дробных чисел.

Перед типом может стоять модификатор типа. Обычно модификаторы применяются к числовым переменным: в этом случае они указывают короткую (h) или длинную (L,l) форму типа. Например, тип %f применяется для вывода значений типа float, %lf — для вывода double, а %Lf — для вывода значений long double.

Функция scanf() выполняет форматируемый ввод из стандартного потока stdin в переменные программы. Так как stdin "привязан" к клавиатуре, то при вводе, очевидно, выполняется преобразование из символьного вида во внутренний двоичный формат. Первым параметром тоже является форматная строка, за которой следует список адресов переменных, куда требуется поместить задаваемые значения. Функция возвращает количество успешно введенных значений. В случае ошибки функция scanf() возвращает системную константу EOF. Обычно эта константа определена как –1.

Символы в форматной строке делятся на три вида: спецификаторы формата, разделители и прочие. К разделителям относятся пробел, табуляция ('\t') и символ конца строки ('\n'). Спецификаторы формата — такие же, как и для функции printf().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]