Для форматованого введення з потоку застосовують функцію
int fscanf (FILE *stream,
const char *format
[, address, ...]
) - повертає число полів введення тих, що відформатували і розміщених в пам'яті. При невдачі повертає EOF.
Функція fscanf розглядає вхідний потік як послідовність полів введення. Поле введення закінчується:
першим символом пропуску (але не включає його);
першим символом, який не може бути перетворений по специфікації формату, зіставленій цьому полю;
(n+1)-м символом, якщо специфікація включає ширину поля в n символов.
Функція проглядає послідовність полів введення, форматує їх і розміщує за адресами - аргументам fscanf. Число адрес, специфікацій формату і полів введення повинно бути узгоджено.
Рядок формату складається з символів (' ',\t,\n), що невідображаються, символів (всі інші, окрім '%'), що відображаються, і специфікаторів формату.
Якщо fscanf зустрічає символ, що невідображається, в рядку, формату, вона прочитуватиме, але не зберігати всі символи вхідного потоку, що невідображаються, аж до першого символу, що відображається.
Якщо fscanf зустрічає символ, що відображається, в рядку, формату, вона прочитає, але не збереже відповідний символ вхідного потоку.
Специфікація формату наказує fscanf читання, перетворення і розміщення в пам'яті одного вхідного поля.
Загальний вид специфікації формату:
%[*] [ширина] [модіф. розміру] [модіф. типу арг.] символ типу
* - відміняє привласнення поля введення;
ширина - максимальне число прочитуваних символів;
модифікатор розміру - N - near, F - far;
модифікатор типу аргументу - змінює тип адресного аргументу;
символ типу - символ специфікації типу - обов'язковий елемент формату.
В таблиці 2.1. перераховані інші функції введення, формату, з вказівкою заголовного файлу і вхідного потоку.
Таблиця 2.1.