Файлы, содержащие форматированные данные, называют форматированными файлами. Ниже представлены функции, которые служат для работы с такими файлами.
· line = fgetl (fid) — возвращает строку из файла с идентификатором fid с удалением символа конца строки. Если функция fgetl обнаруживает конец файла, то она возвращает значение -1 (см. функцию fopen с более подробным описанием fid);
· line = f gets (fid) — возвращает строку из файла с идентификатором fid, не удаляя символ конца строки. Если функция fgets обнаруживает конец файла, то она возвращает значение -1;
· line = fgets(fid.nchar) — возвращает не больше чем nchar первых символов строки. После признака конца строки или конца файла никакие дополнительные символы не считываются (см. примеры к функции fscanf);
· count = fprintf(fid.format,A....) — форматирует данные, содержащиеся в действительной части матрицы А, под контролем строки format и записывает их в файл с идентификатором fid. Функция fprintf возвращает число записанных байтов. Значение идентификатора fid — целое число, возвращаемое функцией fopen.
Если опустить идентификатор fid в списке аргументов функции fprintf, то вывод будет осуществляться на экран, так же как при использовании стандартного вывода (fid=l).
· fprintf(format,A....) — запись осуществляется на стандартное устройство — экран (но не в файл). Строка format определяет систему счисления, выравнивание, значащие цифры, ширину поля и другие атрибуты выходного формата. Она может содержать обычные буквы алфавита наряду со спецификаторами, знаками выравнивания и т. д.
Таблица 19.1.Специальные символы в строках формата
Символ
Описание
\n
Новая строка
\t
Горизонтальная табуляция
\b
Возврат на один символ
\r
Возврат каретки
\f
Новая страница
\\
Обратный слеш
\" или "
Одиночная кавычка
%%
Процент
Функция fprintf ведет себя, как аналогичная функция fprintf О языка ANSI С и с некоторыми исключениями и расширениями. В табл. 19.1 описаны специальные символы, встречающиеся в строке format. Для вывода числовых или символьных данных в строке формата необходимо использовать спецификаторы, перечисленные в табл. 19.2.
Таблица 19.2.Спецификаторы формата вывода данных
Спецификатор
Описание
%d
Десятичная система обозначений (со знаком)
%с
Одиночный символ
%е
Экспоненциальное представление чисел с использованием символа «е» в нижнем регистре, например 3.1415е + 00
%Е
Экспоненциальное представление чисел с использованием символа «Е» в верхнем регистре, например 3.1415Е + 00
%f
Система обозначений с фиксированной точкой
%g
Наиболее компактный вариант из %е и %f. Незначащие нули не выводятся
%G
То же самое, что и %д, но используется верхний регистр для символа «Е»
%о
Восьмеричная система обозначений (без знака)
%s
Строка символов
%u
Десятичная система обозначений (без знака)
%x
Шестнадцатеричная система обозначений с использованием символов нижнего регистра («a»...«f»)
%X
Шестнадцатеричная система обозначений с использованием верхнего регистра символов («A»...«F»)
Между знаком процента и буквой в спецификатор могут быть вставлены дополнительные символы. Их значение поясняет табл. 19.3.
Таблица 19.3.Параметры спецификаторов формата
Символ
Описание
Пример
Знак «минус» (-)
Выравнивание преобразованных аргументов по левому краю
%-5.2d
Знак «плюс» (+)
Всегда печатать знак числа (+ или -)
%+5.2d
Ноль (0)
Заполнение нулями вместо пробелов
%05.2d
Цифры
Определяет минимальное число знаков, которые будут напечатаны
%6f
Цифры (после точки)
Число после точки определяет количество символов, печатаемых справа от десятичной точки
%6.2f
· А = fscanf(fid,format) — читает все данные из файла с идентификатором, fid, преобразует их согласно значению параметра format и возвращает в виде матрицы А. Значение идентификатора fid — целое число, возвращаемое функцией fopen. Параметр format представляет собой строку, определяющую формат данных, которые необходимо прочитать;
· [A,count] = fscanf(fid.format,size) — считывает количество данных, определенное параметром size, преобразует их в соответствии с параметром format и возвращает вместе с количеством успешно считанных элементов count. Параметр size — это произвольный аргумент, определяющий количество считываемых данных. Допустимы следующие значения:
o n — чтение п элементов в вектор-столбец;
o inf — чтение элементов до конца файла и помещение их в вектор-столбец, содержащий такое же количество элементов, что и в файле;
o [m,n] — считывает столько элементов, сколько требуется для заполнения матрицы размера тхп. Заполнение происходит по столбцам. Величина n (но нет!) может принимать значение Inf.
Строка format состоит из обычных символов и (или) спецификаторов. Спецификаторы указывают тип считываемых данных и включают символ %, опцию ширины поля и символы формата. Возможные символы формата перечислены в табл. 19.4.
Последовательность символов; параметр ширины поля определяет количество считываемых символов
%d
Десятичное число
%e, %f, %g
Число с плавающей точкой
%i
Целое число со знаком
%o
Восьмеричное число со знаком
%s
Последовательность непробельных символов
%u
Десятичное целое число со знаком
%x
Шестнадцатеричное целое число со знаком
[...]
Последовательность символов
Между символом % и символом формата допустимо вставлять следующие символы:
· звездочка (*) означает, что соответствующее значение не нужно сохранять в выходной матрице;
· строка цифр задает максимальную ширину поля;
· буква обозначает размер полученного объекта: h для короткого целого числа (например, %n d), 1 для длинного целого числа (например, %ld) или для числа с двойной точностью с плавающей запятой (например, % lg ).