Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

2.31.2. Подготовка файла к работе.

Для открытия файлов может использоваться функция fopen, которая в случае удачного завершения возвращает целочисленный положительный идентификатор файла f_id (называемый также номером файла). В простейшем варианте вызова указывается единственный входной аргумент – имя открываемого файла:

f_id=fopen('name_file');

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

[f_id err_txt]=fopen('name_file');

В случае ошибки в переменную err_txt будет занесено соответствующее сообщение. Если указанный файл обнаружен, то он открывается для чтения как бинарный файл.

Второй необязательный аргумент функции fopen определяет режим доступа к открываемому файлу. В качесте данного параметра могут выступать один, два или три символа, заключенные в одинарные кавычки. Соответствующие пояснения представлены в таблице 2.31.1.

Таблица 2.31.1. Варианты вызова функции fopen.

Формат вызова

Выполняемое действие

1

2

fopen('name_file','r')

Открывается существующий

бинарный файл для чтения

fopen('name_file','rt')

Открывается существующий

текстовый файл для чтения

fopen('name_file','r+')

Открывается существующий

бинарный файл, который может

использоваться как для чтения, так

и для записи (новый файл при этом

не создается)

fopen('name_file','rt+')

Открывается существующий

текстовый файл, который может

использоваться как для чтения, так

и для записи (новый файл при этом

не создается)

fopen('name_file','w')

Открывается существующий или

создается новый бинарный файл

для записи. Предыдущее

содержимое существующего

файла пропадает

fopen('name_file','wt')

Открывается существующий или

создается новый текстовый файл

для записи. Предыдущее

содержимое существующего

файла пропадает

fopen('name_file','w+')

Если существующий бинарный

файл был ранее открыт, то его

содержимое от текущей позиции

указателя и до конца усекается.

Если файл с таким именем не

Существовал, то создается новый

Файл. Открытый файл можно

Использовать для записи

и чления.

fopen('name_file','wt+')

Если существующий текстовый

файл был ранее открыт, то его

содержимое от текущей позиции

указателя и до конца усекается.

Если файл с таким именем не

Существовал, то создается новый

Файл. Открытый файл можно

Использовать для записи и чления.

1

2

fopen('name_file','a')

Открывается существующий

бинарный файл для дозаписи

или создается новый файл.

fopen('name_file','at')

Открывается существующий

текстовый файл для дозаписи

или создается новый файл.

fopen('name_file','a+')

Открывается существующий

бинарный файл для чтения

и дозаписи. Если файла с указанным

именем нет, то его создают.

fopen('name_file','at+')

Открывается существующий

текстовый файл для чтения

и дозаписи. Если файла с указанным

именем нет, то его создают.

Отметим, что иногда при открытии бинарных файлов по аналогии с языком программирования C++ к символам режима добавляют буку b (от английского слова binary – бинарный или двоичный): 'rb', 'wb' и т.д.

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

Заметим, что функция fopen допускает еще один вариант вызова:

v=fopen('all');

В этом случае она возвращает вектор с номерами всех файлов, открытых к рассматриваемому моменту времени (файлы с номерами 0, 1 и 2, закрепленными за системными файлами (это соответственно файл стандартного ввода (stdin), файл стандартного вывода (stdout) и файл, предназначенный для вывода сообщений об ошибках (stderr)), в этот список не влючаются.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]