Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в среде Matlab.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
104.59 Кб
Скачать

2.1.2 Форматные операции ввода-вывода

Для операций ввода-вывода с использованием форматов данных и работы с бинарными файлами применяются команды, напоминающие стандартные функции языка С.

Перед началом записи или чтения нужный файл следует открыть при помощи команды

FI=fopen ('NAME'. 'FLAG')

Имя файла NAME должно содержать путь, если файл берется из каталога, не указанного в списке каталогов Path Browser. Строковая переменная ' FLAG' определяет тип файла и способ работы с ним: ' t' – текстовый файл, ' b' – бинарный файл, ' г' – чтение, V – запись, " г+' – чтение и запись одновременно, ' а' – добавление в конец файла. Например, для чтения бинарного файла следует задать флаг ' rb', для записи текстового – 'wt'. Полученный в результате выполнения операции fopen числовой идентификатор FI используется в качестве параметра для функций fread и fwrite. Если открыть файл не удалось, то FI=-1. Чтобы закрыть файл, надо выполнить команду fclose(FI). Список команд ввода-вывода приведены в таблице 2.1.

Таблица 2.1

Имя

Назначение

Fopen

Открытие файла

Fclose

Закрытие файла

Fread

Считывание данных из файла

Fwrite

Запись данных в файл

f scanf

Считывание форматированных данных из файла

Fprintf

Запись данных в файл или вывод на экран

Fgetl

Считывание строки из файла без служебных символов

Fgets

Считывание строки из файла со служебными символами

dlmread

Чтение данных с разделителями из текстового файла

textread

Чтение форматированных данных из текстового файла

Команда fread применяется для чтения бинарных файлов:

[AXOUNT]=fread (FI.SIZE.'PREC'.'SKIP')

Здесь А – имя матрицы, куда заносятся считываемые данные, a COUNT – число прочитанных элементов. Если дополнительный параметр SIZE отсутствует, то считывается весь файл, целое число N в качестве SIZE задает считывание N элементов и формирование вектора-строки, а при указании в качестве SIZE вектора [М, N] формируется матрица размера [M.N], причем параметр N может принимать значение inf. Параметр 'PREC задает число бит для записи чисел. Например, текстовая строка 'float64' указывает, что данные следует записывать в формате двойной точности, по 8 байт на число, а четырехбайтовый формат записи целых чисел задается строкой 'integer*4'. Перечень допустимых форматов можно получить по справке help fread. Дополнительный параметр 'SKIP' определяет число байтов, которое должно быть пропущено после считывания очередного элемента.

Команда fwrite используется для записи бинарных файлов:

COUNT=fwrite (FI, PARA.'PREC.'SKIP')

Здесь FI – идентификатор файла, PARA – имя записываемой переменной, а назначение остальных параметров то же, что и для команды fread.

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

Для считывания части данных используется функция f seek (FI, NUM.' FLAG'), служащая для перемещения на целое число NUM позиций, причем положительное NUM означает продвижение к концу файла, а отрицательное – к началу файла. После открытия файла указатель установлен на первый байт. После считывания очередного числа указатель переместится на столько байтов, каков формат чтения. Текущее положение выводится по команде ftell (FI). Для проверки достижения конца файла служит команда feof (FI). Для возврата в начало файла можно использовать функцию frewind (FI).

Бинарные файлы являются просто потоками байтов, а для работы с текстом, разбитым на строки, используются текстовые файлы. Такие файлы могут содержать как текст, так и числовую информацию, которую для записи предварительно следует перевести в строковые переменные при помощи команд num2str и int2str. Для чтения информации из текстовых файлов применяются функции fgetl, fgets и fscanf. Для записи служит функция fprintf, причем если файловый идентификатор равен единице или отсутствует, то вывод идет на экран. Для чтения и записи применяются форматные спецификации. Спецификации при вводе и выводе описаны в таблице 2.2.

Таблица 2.2

Код

Описание

% d

Чтение целого числа (при выводе – переменная double)

% u

Чтение положительного целого числа (при выводе – переменная double)

% f

Чтение вещественного числа (при выводе – переменная double)

% s

Чтение строки с пробелами (при выводе – переменная типа cellstr)

% q

Чтение строки (при выводе – переменная типа cellstr)

% c

Чтение символов, разделенных пробелами (при выводе – переменная типа cellstr)