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

2.31.3. Завершение работы с файлами.

Файл, работа с которым завершена, должен быть закрыт. Для реализации такой операции может быть использована функция fclose, синтаксис

обращения к которой допускает два возможных формата

s=fclose(f_id);

s=fclose('all');

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

2.31.4. Контроль за исчерпанием данных.

При выборке информации из текстового или бинарного файла, открытого для чтения, может наступить момент, когда прочитана последняя порция данных и в файле больше ничего нет. Контроль за тем, достиг ли соотвествующий указатель файла конца данных (end of file) обеспечивает специализированная функция feof:

k=feof(f_id);

Если возвращаемое функцией значение равно 0, то в файле еще находятся непрочитанные данные. При исчерпании данных значение, возвращаемое функцией feof, равно 1.

2.31.5. Чтение из текстового файла.

Как известно, содержимым текстового файла являются строки.

Рассматривая последовательное чтение строк из текстовго файла, отметим, что чтение очередной строки из текстового файла осуществляется с помощью функции fgetl, при этом информация из файла читается от текущей позиции до тех пор, пока не встретится соответствующий признак окончания строки или не будут исчерпаны данные. Функция имеет единственный входной аргумент – номер открытого текстового файла – и возвращает прочитанную строку. Если данные в файле исчерпаны, после обращения к функции fgetl получим -1 в качестве значения выходного параметра.

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

– прочитано указанное количество символов;

– встретился признак конца строки;

– данные в файле исчерпаны.

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

2.31.6. Анализ ошибок в файловых операциях.

На практике обмен с файлом может завершиться ошибкой. С помощью функции ferror можно получить соответствующее сообщение и узнать номер ошибки:

msg_err=ferror(f_id);

[msg_err num_err]=ferror(f_id);

Если последняя операция обмена с указанным файлом завершилась нормально, то в символьную переменную msg_err возвращается пустая строка, а в качестве номера ошибки в переменную num_err заносится 0. При возникновении внештатной ситуации числовой код ошибки будет отличен от 0. Для продолжения работы с данным файлом необходимо сбросить признак аварийной ситуации:

[msg_err num_err]=ferror(f_id,'clear');

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