Форматоване введення

Для форматованого введення з потоку застосовують функцію

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.