Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УТП 12 Файловые операции.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
284.16 Кб
Скачать

Текстовые файлы

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

Открытие файла, считывание данных и закрытие файла

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

'rt' – открываемый текстовый файл предназначен только для чтения;

'rt+'– открываемый текстовый файл предназначен для чтения и записи;

'wt' – создаваемый пустой текстовый файл предназначен только для записи;

'wt+'– создаваемый пустой текстовый файл предназначен для записи и чтения;

'at' – открываемый текстовый файл предназначен только для добавления данных в конец файла (если файла не существует, то он создается);

'at+' – открываемый текстовый файл предназначен для добавления данных в конец файла и чтения данных (если файл не существует, то он создается).

Символ t указывает на то, что файл текстовый. Вышеперечисленные способы доступа возможны и для двоичных файлов. Например: 'w+' означает создание пустого двоичного файла для чтения и записи.

Выходным аргументом fopen является идентификатор (ссылочный или логический номер), присвоенный файлу. Если файл открыть не удалось, то идентификатор становится равным минус единице. Ошибки часто возникают из-за того, что MATLAB не может найти требуемый для чтения файл. Всегда лучше указывать полное имя файла, при задании только имени и расширения MATLAB производит поиск в текущем каталоге и путях поиска. Например, если в вашем текущем каталоге нет файла beep.m, то fopen('beep.m','rt') найдет его в подкаталоге \toolbox\MATLAB\general\ основного каталога MATLAB. Функция fopen может быть вызвана и со вторым дополнительным выходным аргументом – строковой переменной с сообщением о результате открытия.

По окончании работы необходимо закрыть файл командой fclose, указав в качестве входного аргумента идентификатор файла.

Запись в текстовый файл

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

Запись строк

Откройте текстовый файл, находящийся в текущем каталоге, в режиме записи:

F=fopen('example.txt','w')

Если файла example.txt в текущем каталоге или в путях поиска нет, то он будет создан.

Добавление строки в текстовый файл осуществляется при помощи fprintf, вызванной с двумя входными аргументами – идентификатором файла и строкой с текстом, например, команда

fprintf(F, 'Строка добавлена командой fprintf. ')

записывает соответствующую строку в файл с идентификатором F, присвоенным ему при открытии. Последующая команда fprintf выводит заданную строку сразу за предыдущей, а не на новой строке:

fprintf ( F , 'Еще строка.')

Для вывода текста с новой строки следует добавить символ перевода строки \n в начало новой строки после апострофа:

fprintf(F, '\nЭтот текст с новой строки.')

Символ перевода строки \n можно разместить в конце строки, после которой текст должен начинаться с новой строки, например, последовательность команд

fprintf(F, 'Строка добавлена командой fprintf. ')

fprintf(F, 'Еще строка.\n')

fprintf(F, 'Этот текст с новой строки.')

приводит к аналогичному результату.

Конечно, вторым аргументом fprintf может быть не только строка, заключенная в апострофы, но и строковая переменная:

str = 'Этот текст добавляется в файл.'

fprintf(F, str)

Для указания команде fprintf, что следующий вывод должен осуществляться с новой строки необходимо использовать сцепление строк либо при помощи квадратных скобок, либо с использованием strcat

str = 'Этот текст запишется в файл, а следующий – с новой строки';

fprintf(F, [str '\n' ] ) ;

или

fprintf (F, strcat(str, ' \n ' ) )

После завершения рассмотрения примеров не забудьте закрыть файл с помощью команды fclose.

fclose(F)

Задание 4.

Выполните последовательность команд, представленных выше. Покажите содержимое файла example.txt.

Пример 1.

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

function sintable(filename)

% файл-функция для вывода таблицы sin(x) в файл

% Использование sintable(filename)

% Добавьте проверку входных и выходных параметров

% Открытие нового файла для записи

[F, mes] = fopen(filename, 'w');

% Печать в файл заголовка таблицы

fprintf(F, 'ТАБЛИЦА ЗНАЧЕНИЙ ФУНКЦИИ sin(x)\n');

% Печать в файл шапки таблицы

fprintf(F, '-------------------\n');

fprintf(F, '| x | y= sin(x)|\n');

fprintf(F, '-------------------\n');

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

fclose(F);