Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИС-лабраб-методичка.doc
Скачиваний:
19
Добавлен:
06.02.2016
Размер:
534.02 Кб
Скачать

Лабораторная работа №5 Работа с текстовыми файлами. Работа со структурами.

Цель работы: освоить работу с текстовыми и m-файлами, работу со структурами и массивами структур.

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

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

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

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

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

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

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

Считывание строк из открытого текстового файла производится командой fgetl, входным аргументом которой является идентификатор файла, присвоенный ему при открытии, а выходным — строковая переменная. Каждое обращение к fgetl позволяет последовательно считывать строки от начала до конца файла. Контроль за достижением конца файла осуществляется функцией feof с .входным аргументом — идентификатором файла, feof возвращает единицу, если в файле нет больше строк, и ноль — в противном случае. По окончании работы необходимо закрыть файл командой fclose, указав в качестве входного аргумента идентификатор файла.

Файл-функция myview демонстрирует открытие текстового файла, занесение содержимого в массив строк и вывод их на экран. Вызов файл-функции с входным аргументом — именем любого существующего файла, заключенным в апострофы, приводит к отображению содержимого файла в командном окне. Если М-файл с файл-функцией myview хранится в текущем каталоге MatLab, то команда myview (.'myview.m') выводит листинг самой файл-функции.

function myview(filename)

% Функция выводит содержимое текстового файла на экран

% использование myview('имя файла')

% проверка аргументов

if nargout ~= 0

error('Функция не имеет выходных аргументов');

end

if nargin ~= 1

error('Функция вызывается с одним входным аргументом');

end

if ~ischar (filename)

error('Входной аргумент функции является строкой');

end

% Открытие текстового файла для считывания (аргумент 'rt'),

% имя файла хранится в filename,

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

% строка с информацией о возможных ошибках в mes

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

% Если файл'успешно открылся, то идентификатор не равен минус единице

if F ~= -1

MAS = ' '; % сначала массив состоит только из пустой строки

% Последовательное считывание из файла строки до тех пор,

% пока не достигнут конец файла

while feof(F) == 0

% считывание строки

line = fgetl(F);

%добавление считанной строки в массив строк

MAS=char(MAS,line);

end

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

fclose(F);

%вывод массива строк в командное окно

disp(MAS)

else

% в эту ветвь программа заходит, если при открытии файла

%возникли ошибки

%происходит информирование об ошибке и вывод в командное

%окно сообщения, выданного fopen

disp(‘Ошибка при открытии файла’)

disp(mes)

end