690_____________________________________________Глава 12

последовательности символов « % », после которых следует символ типа читаемых
данных. Ниже приведены некоторые наиболее часто используемые символы (по-
дробнее см. в разделе 14.4.2 главы 14):

Символ	Вводимое значение	Тип аргумента функции
i	Десятичное, восьмеричное или шестнадцатеричное целое	int *arg
I	Десятичное, восьмеричное или шестнадцатеричное целое	long *arg
d	Десятичное целое	int *arg
D	Десятичное целое	long *arg
u	Десятичное целое без знака	unsigned int *arg
U	Десятичное целое без знака	unsigned long *arg
e, E	Действительное с плавающей запятой	float *arg
s	Строка символов	char arg[]
с	Символ	char *arg

Перед символом типа могут добавляться модификаторы. В частности, модифи-
катор 1 расширяет тип целого до long int, а тип действительного до double.

Пусть, например, вы знаете, что начиная с текущей позиции файла в нем за-
писаны, разделенные пробелами, два целых и одно действительное число. Тогда
прочитать эти числа можно операторами:

int il, i2;

double r;

fscanf(F, "%d%d%le",

&il, &i2, &r)

Предупреждение

Обратите внимание, что в качестве аргументов, в которые заносятся читаемые функцией
fscanf данные, всегда указываются адреса переменных, а не сами переменные. Отсутствие
операции адресации (&) - очень распространенная ошибка, которая приводит к самым не-
ожиданным результатам.

При форматированном чтении могут возникать ошибки из-за достижения кон-
ца файла или из-за неверного формата записанного в файле числа. Проверить,
успешно ли прошло чтение, можно по значению, возвращаемому функцией fscanf.
При успешном чтении она возвращает число прочитанных полей. Поэтому в на-
шем примере лучше организовать чтение следующим образом:

if (fscanf(F, "%d%d%le", &il, &i2, &r) != 3)
{
ShowMessage("Ошибка чтения") ;

Символ типа s позволяет читать из файла отдельное слово, точнее — так называе-
мую лексему — последовательность символов, завершающуюся пробельным симво-
лом. Пусть, например, мы хотим просмотреть файл, чтобы узнать, не встречается ли
в нем слово, которое пользователь ввел в окне редактирования Editl. Для решения
этой задачи после того, как файл открыт, можно написать, например, следующий
код: