Функция scanf() — это программа ввода общего назначения, выполняющая ввод с консоли. Она может читать данные всех встроенных типов и автоматически преобразовывать числа в соответствующий внутренний формат, scanf() во многом выглядит как обратная к printf(). Вот прототип функции scanf():
int scanf(const char * управляющая_строка,...);Эта функция возвращает количество тех элементов данных, которым было успешно присвоено значение. В случае ошибки scanf() возвращает EOF, управляющая_строка определяет преобразование считываемых значений при записи их переменные, на которые указывают элементы списка аргументов.
Управляющая строка состоит из символов трех видов:
- спецификаторов преобразования,
- разделителей,
- символов, не являющихся разделителями.
Теперь поговорим о каждом из этих видов.
Спецификаторы преобразования
Каждый спецификатор формата ввода начинается со знака %, причем спецификаторы формата ввода сообщают функции scanf() тип считываемых данных. Перечень этих кодов (т.е. литер-спецификаторов) приведен в табл. 8.3. Спецификаторам преобразования в порядке слева направо ставятся в соответствие элементы списка аргументов. Рассмотрим некоторые примеры.
|
|
Таблица 8.3. Спецификаторы преобразования для функции scanf() | |
Код | Значение |
%a | Читает значение с плавающей точкой (только С99) |
%c | Читает одиночный символ |
%d | Читает десятичное целое число |
%i | Читает целое число как в десятичном, так и восьмеричном или шестнадцатеричном формате |
%e | Читает число с плавающей точкой |
%f | Читает число с плавающей точкой |
%g | Читает число с плавающей точкой |
%о | Читает восьмеричное число |
%s | Читает строку |
%x | Читает шестнадцатеричное число |
%p | Читает указатель |
%n | Принимает целое значение, равное количеству уже считанных символов |
%u | Читает десятичное целое число без знака |
%[] | Читает набор сканируемых символов |
%% | Читает знак процента |