Форматированный ввод и вывод

Форматированный ввод и вывод на консоль осуществляют функции printf ( ) и scanf ( ). Форматированный ввод и вывод означает, что функции могут читать и выводить данные в разном формате, которым можно управлять. Функция printf() имеет прототип (описана) в файле STDIO.H int printf(char *управляющая_строка, ...); Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и команды формата ( спецификаторы формата), определяющие, как выводить аргументы. Команда формата начинается с символа %, за которым следует код формата. Команды формата следующие:

%с - символ,

%d - целое десятичное число,

%i - целое десятичное число,

%е - десятичное число в виде х.хх е+хх,

%Е - десятичное число в виде х.хх Е+хх,

%f - десятичное число с плавающей запятой хх.хххх,

%F - десятичное число с плавающей запятой хх.хххх,

%lf - десятичное число с плавающей запятой двойной точности хх.хххх (тип double),

%g - %f или %е, что короче,

%G - %F или %Е, что короче,

%о - восьмеричное число,

%s - строка символов,

%u - беззнаковое десятичное число,

%х - шестнадцатеричное число 5a5f,

%Х - шестнадцатеричное число 5A7F,

%% - символ %,

%р - указатель,

%n - указатель.

Кроме того, к командам формата могут быть применены модификаторы l и h, например: %ld - печать long int, %hu - печать short unsigned, %Lf - печать long double. Между знаком % и форматом команды может стоять целое число. Оно указывает на наименьшее поле, отводимое для печати. Если строка или число больше этого поля, то строка или число печатается полностью, игнорируя ширину поля. Нуль, поставленный перед целым числом, указывает на необходимость заполнить неиспользованные места поля нулями. Вывод printf("%05d", 15); даст результат 00015.

Также при работе с функцией printf ( ) понадобятся дополнительные комбинации символов для форматирования выводимого текста. Они представлены в таблице.

Таблица. Стандартные названия некоторых комбинаций символов.

Конец строки NL(LF) \n
Горизонтальная табуляция HT \t
Вертикальная табуляция VT \v
Возврат BS \b
Возврат каретки CR \r
Перевод формата FF \f
Сигнал BEL \a
Обратная дробная черта \ \\
Знак вопроса ? \?
Одиночная кавычка \’
Двойная кавычка ‘’ \’’
Нулевой символ NULL \0
Восьмеричное число \000
Шестнадцатиричное число hhh \xhhh

Scanf() - основная функция ввода с консоли. Она предназначена для ввода данных любого встроенного типа и автоматически преобразует введенное число в заданный формат. Прототип из файла STDIO.H имеет вид int scanf (char *управляющая_строка, ...); Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Команды или спецификаторы формата начинаются с символа %. Они перечислены ниже:

%с - чтение символа,

%d - чтение десятичного целого,

%i - чтение десятичного целого,

%е - чтение числа типа float,

%h - чтение short int.

%о - чтение восьмеричного числа,

%s - чтение строки.

%х - чтение шестнадцатеричного числа,

%р - чтение указателя,

%n - чтение указателя в увеличенном формате.