23-24)Файлы(текстовые).Файлы бинарные.
Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные.
Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки». Конец самого файла обозначается символом «конца файла». При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде.
В двоичных файлах информация считывается и записывается в виде блоков определенного размера, в которых могут храниться данные любого вида и структуры.
Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstream служит для работы с файлами в режиме чтения, а ofstream в режиме записи. Для работы с файлами в режиме как записи, так и чтения служит поток fstream.
В программах на C++ при работе с текстовыми файлами необходимо подключать библиотеки iostream и fstream.
Для того чтобы записывать данные в текстовый файл, необходимо:
1)описать переменную типа ofstream.
2)открыть файл с помощью функции open.
3)вывести информацию в файл.
4)обязательно закрыть файл.
Для считывания данных из текстового файла, необходимо:
1)описать переменную типа ifstream.
2)открыть файл с помощью функции open.
3)считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла.
4)закрыть файл.
Следует отметить, что во всех рассмотренных выше примерах функция fopen() в режимах “r” и “w” открывает текстовый файл на чтение и запись соответственно. Это означает, что некоторые символы форматирования текста, например возврат каретки ‘\r’ не могут быть считаны как отдельные символы, их как бы не существует в файле, но при этом они там есть. Это особенность текстового режима файла. Для более «тонкой» работы с содержимом файлов существует бинарный режим, который представляет содержимое файла как последовательность байтов где все возможные управляющие коды являются просто числами. Именно в этом режиме возможно удаление или добавление управляющих символов недоступных в текстовом режиме. Для того чтобы открыть файл в бинарном режиме используется также функция fopen() с последним параметром равным “rb” и “wb” соответственно для чтения и записи.
Функции для работы с файлами: FILE fopen (char *filename, char *mode) - Связывает указатель с файлом и открывает файл.
filename-указатель на имя файла.
mode – указатель на строку, содержащую режим.
Допустимые значения параметра mode:
Значение |
Описание |
r |
Файл открывается только для чтения |
w |
Файл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписан |
a |
Файл открывается для записи в конец (для дозаписи) или создается, если не существует |
r+ |
Файл открывается для чтения и записи. |
w+ |
Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан |
a+ |
Файл открывается для записи в конец (для дозаписи) или создается, если не существует |
Файловый указатель (file pointer) –это указатель на информацию о файле, включающую его имя, статус, текущее расположение
Указатель файла – это указатель на структуру типа FILE, которая определена в файле stdio.h
Существует два типа файлов:
1)текстовый (text)- последовательность символов, заканчивающаяся двумя символами: перевод строки и возврат каретки;
2)двоичный (binary)- последовательность байтов.