Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПТСПЦУВСБ / 28. Работа с текстовыми файлами в С

..docx
Скачиваний:
53
Добавлен:
27.12.2015
Размер:
571.11 Кб
Скачать

28. Работа с текстовыми файлами в С.

ANSI C реализует работу с файлами двумя основными способами. Первый подход

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

текстовыми файлами. Второй позволяет осуществлять чтение или запись в произвольное

место файла.

Организация последовательного доступа к файлам в C во многом схожа с

текстовыми файлами Pascal (таб. 5.3).

В 1 строке таблицы подключается заголовочный файл “stdio.h”, это необходимо

для использования подпрограмм работы с файлами.

Во 2 строке таблицы объявляется переменная-указатель на структуру FILE.

Структура хранит информацию о файле c которым она связана и нужна для

взаимодействия программы с операционной системой. Количество и состав полей FILE

различается для различных ОС и при использовании разных файловых систем. Стандарт

ANSI C предписывает разработчикам компиляторов языка C учитывать такие технические

особенности и программист в большинстве случаев может не заботиться о внутреннем

устройстве этой структуры. Поэтому, непосредственный доступ к полям структуры FILE

обычно не производится. Обычно эта структура хранит такие данные, как: дату и время

создания файла, дескриптор (англ. handle) – уникальный целочисленный номер файла, с

которым оперирует ОС, список атрибутов файла, информацию о правах доступа к нему и

т.п. Переменная типа Text в Pascal также является указателем на аналогичную запись.

В 3 строке таблицы файл открывается для записи. В C это делается одной

командой: FILE *fopen(”Путь_к_файлу”, ”Режим_доступа”). Функция fopen

возвращает указатель на структуру FILE, поля которой хранят информацию о свойствах

файла Путь_к_файлу. Если ОС не может предоставить доступ к интересующему файлу,

например, он уже используется другой программой, то fopen вернет NULL. При

открытии файла можно выбрать один из 6 режимов доступа (таб. 5.4).

4 строке таблицы 5.3 в текстовый файл выводятся числа в 2 столбца. Числа в обоих

столбцах выравниваются по правому краю 4 символьного поля. Для этого в программе

используется функция fprintf. Она является вариантом функции printf для работы с

файлами отличается от printf только наличием дополнительного аргумента. Первым

аргументом fprintf является указатель на структуру FILE, связанную с файлом, с

которым осуществляется работа.

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

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

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

используется программой, связь между F и структурой FILE разрушается.

Для чтения данных из файла, созданного с помощью программы из таблицы 5.3

можно использовать программу, приведенную в листинге 5.3. В ней с помощью функции

fscanf осуществляется чтение в переменные a и b значений из двух столбцов текущей

строки загружаемого файла. В цикле while осуществляется проверка на достижение конца

файла с помощью feof(FILE *), feof возвращает ненулевое значение (“Истина”) в

случае, если достигнут конец файла.