Файлы, содержащие
форматированные данные, называют
форматированными файлами.
Ниже представлены
функции, которые служат для работы с такими файлами.
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 — это произвольный
аргумент, определяющий количество считываемых данных. Допустимы следующие
значения:
n
— чтение п элементов в вектор-столбец;
inf
— чтение элементов до конца файла и помещение их в вектор-столбец, содержащий
такое же количество элементов, что и в файле;
[m,n]
— считывает столько элементов, сколько требуется для заполнения матрицы
размера
тхп.
Заполнение происходит по столбцам. Величина n (но
нет!) может принимать значение Inf.
Строка format
состоит из обычных символов и (или) спецификаторов. Спецификаторы указывают
тип считываемых данных и включают символ
%,
опцию ширины поля и символы
формата. Возможные символы формата перечислены в табл. 19.4.
Последовательность
символов; параметр ширины поля
определяет
количество считываемых символов
%d
Десятичное
число
%e,
%f, %g
Число
с плавающей точкой
%i
Целое
число со знаком
%o
Восьмеричное
число со знаком
%s
Последовательность
непробельных символов
%u
Десятичное
целое число со знаком
%x
Шестнадцатеричное
целое число со знаком
[...]
Последовательность
символов
Между символом
%
и символом формата допустимо вставлять следующие символы:
звездочка
(*) означает, что соответствующее значение не нужно сохранять в выходной
матрице;
строка
цифр задает максимальную ширину поля;
буква
обозначает размер полученного объекта: h для короткого целого числа (например,
%n d), 1 для длинного целого числа (например, %ld) или для числа с двойной
точностью с плавающей запятой (например,
%
lg
).