Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Файлы.doc
Скачиваний:
24
Добавлен:
11.05.2015
Размер:
140.8 Кб
Скачать

Тема 14. Файлы Понятие файла. Процедуры для работы с файлами – открытие и закрытие файлов. Создание и работа с текстовыми файлами. Основные функции чтения-записи

14.1.Понятие файла

Различают два вида файлов: текстовые и двоичные.

Текстовыефайлы хранят информацию в виде последовательности символов. Вывод осуществляется аналогично выводу на экран. Текстовые файлы могут быть отредактированы в любом текстовом редакторе. В текстовом режиме каждый разделительный символ строки автоматически преобразуется в пару (возврат каретки – переход на новую строку).

Например строка “Privet\nstudent\n”

В памяти хранится:

P r i v e t \10 s t u d e n t \10 \0

В текстовом файле хранится:

P r i v e t \10\13 s t u d e n t \10 \13

Бинарные(или двоичные) файлы предназначены для хранения только числовых значений данных. Структура такого файла определяется программно.

Дисковый файл – это поименованное место на носителе информации.

Файлы, размещаемые на магнитных носителях, имеют следующую структуру:

В начале файла записана информация о файле BOF (Begin of File), его имя, тип, длина и т.д., в конце файла помещается признак конца файла EOF (EndofFile). Если файл пуст, то BOF иEOFсовмещены, а указатель установлен в ноль.

14.2. Функции для работы с файлами

Функции для работы с файлами размещены в библиотеках stdio.lib(#include < stdio.h >) и io.lib(#include < io.h >). Каждый файл должен быть связан с некоторым указателем. Этот указатель имеет тип FILE и используется во всех операциях с файлами.

Формат объявления указателя на файл следующий:

File *указатель на файл;

Например:

File *fl1, *fl2;

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

Макрос NULL определяет пустой указатель.

Макрос EOF, часто определяемый как -1, является значением, возвращаемым тогда, когда функция ввода пытается выполнить чтение после конца файла.

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

14.2.1. Функции для открытия-закрытия файла

Прототип функции:

File *fopen(const char *имя_файла, const char *режим_открытия);

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

Имя_файла— это указатель на строку символов, в которой хранится имя файла и путь к нему. Например: “d:\\work\\lab2.dat”.

режим_открытияэто указатель на строку символов, в которой указывается режим открытия файла. Допустимы режимы указаны в таблице:

r

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

w

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

a

Добавить информацию в конец текстового файла

rb

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

wb

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

ab

Добавить информацию в конец двоичного файла

r+

Открыть текстовый файл для чтения/записи

w+

Создать текстовый файл для чтения/записи

a+

Добавить в конец текстового файла или создать текстовый файл для чтения/записи

r+b или

rb+

Открыть двоичный файл для чтения/записи

w+b или

wb+

Создать двоичный файл для чтения/записи

a+b или

ab+

Добавить в конец двоичного файла или создать двоичный файл для чтения/записи

По умолчанию файл открывается в текстовом режиме.

Если при открытии файла произошла ошибка, функция fopenвозвращает значениеNULL.

Для создания файла можно записать:

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