Функция 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 | Читает десятичное целое число без знака |
| %[] | Читает набор сканируемых символов |
| %% | Читает знак процента |






