- •Тема 14. Файлы Понятие файла. Процедуры для работы с файлами – открытие и закрытие файлов. Создание и работа с текстовыми файлами. Основные функции чтения-записи
- •14.1.Понятие файла
- •14.2. Функции для работы с файлами
- •File *указатель на файл;
- •File *fl1, *fl2;
- •14.2.1. Функции для открытия-закрытия файла
- •File *fopen(const char *имя_файла, const char *режим_открытия);
- •File *fl;
- •File *fl;
- •Return 1;
- •File *fl;
- •Int fclose(file *указатель_на _файл);
- •File *fl;
- •Int *fscanf(file * указатель_на _файл,
Тема 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.
Для создания файла можно записать: