Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ Программирование и основы алгоритмизации...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.5 Mб
Скачать

Открытие и закрытие потока

#include <stdio.h>

FILE*fp; //fp – указатель на поток

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

Указатель на поток получит значение в результате выполнения функции открытия потока (файла):

fp=fopen(имя_файла, режим_открытия);

Параметры – указатели на строку с именем файла и на строку режимов открытия. Эти параметры можно задавать и непосредственно в виде строк при вызове функции открытия файла:

fp=fopen(“t.txt”, “r”);

fp=fopen(“z:\\h\\data”, “rb+”);

При открытии потока (файла) в программу возвращается указатель на поток, являющийся указателем на объект структурного типа FILE. Этот указатель идентифицирует поток (файл) во всех последующих операциях.

Файл, связанный с потоком, можно открыть в одном из шести режимов:

w – новый текстовый файл открывается для записи. Если он уже существует, то он стирается, файл создается заново;

r – существующий текстовый файл открывается только для чтения;

w+” – новый текстовый файл открывается для записи и последующих исправлений. Если он уже существует, то стирается. Последующие после открытия запись и чтение из него допустимы в любом месте файла, т.е. запись разрешена и в конец файла, т.е. файл может «расти»;

r+” – существующий текстовый файл открывается как для чтения, так и для записи в любом месте файла; однако недопустимо увеличение размеров файла;

a – текстовый файл открывается (или создается, если его нет) для добавления в него новой информации (в конец);

a+” – текстовый файл открывается (или создается, если его нет) и допустим для изменений, для чтения и записи в любом месте; может увеличивать размеры.

Текстовый режим

Текстовый режим обозначается через t (по умолчанию), но возможно a+t,rt, … . Текстовые файлы предназначены для чтения, т.е. читабельны.

Прочитанная из файла комбинация символов CR (возврат каретки, код 13) и LF (перевод строки, код 10) в ОП преобразуется в один символ новой строки ‘\n (код 10). При записи в файл осуществляется обратное преобразование, т.е. ‘\n заменяется последовательностью CR и LF.

Бинарный режим

При открытии файла в бинарном (двоичном) режиме (r+b”, “wb и др.) файл будет хранить двоичную информацию. Двоичные файлы нечитабельны. Преобразования, как в текстовом режиме, не будет.

Режимы с “+”

Смена режима (переход от записи к чтению и обратно, в режиме с “+”) должна проходить только после перевода указателя (индикатора) файла в нужную позицию.

Ошибки

При открытии файла могут возникнуть ошибки:

1)указанный файл не найден (для «чтения»);

2)диск заполнен;

3)диск защищен от записи и т.д.

При выполнении fopen выделяется динамическая память под буфер. При её отсутствии – ошибка: недостаточно памяти. В этих случаях fp=NULL.

Чтобы установить ошибку, используют последовательность операторов:

if((fp=fopen(“t.txt”,”w”))==NULL)

{ perror(“Ошибка при открытии файла t.txt”);

exit(0); // в stdlib.h

}

Функция void perror(const char* s); выводит строку “…” по указателю s, затем - : <сообщение об ошибке>. Сообщение выбирается функцией по номеру ошибки.