функцией открытия потока, функцией fopen(), имеющую следующую конструкцию:
fopen(имя_файла, режим_открытия)
где имя_файла – это строка, содержащая «внешнее имя файла», т. е. имя под которым он хранится на внешнем устройстве.
Например, “С:\\ZZ\\ZARP.doc” и “A:\\KONF\\doclad.txt”.
В этом примере:
ZARP и doclad – это имена файлов,
doc и txt – это так называемое расширение, определяющее вид файла,
С:\\ZZ\\ и A:\\KONF\\ -это пути, указывающие месторасположенияфайлов.
Файл ZARP.doc находится на диске С в директории ZZ. Файл doclad.txt находится на диске А в директории KONF.
Таким образом, внешнее имя файла может состоять из пути, имени файла и расширения. Расширение отделяется от имени точкой. Обратите внимание, что при указании пути пишется два знака «\\» вместо одного «\».
Это происходит из-за того, что в строке Си (вспомните, мы это уже рассматривали!) два знака '\\' воспринимаются как знак ‘\’, а один знак ‘\’ воспринимается как управляющий символ. В частном случае путь может не указываться и принимается по умолчанию (определяется текущей директорией).
Открытые на диске файлы после окончания их обработки рекомендуется закрыть. Для этого используется библиотечная функция:
int fclose ( указатель_на_поток );
Для нашего потока fp1 этот оператор может быть записан в следующем виде:
fclose (fp1);
Открытый файл можно открыть повторно (например, для изменения режима работы с ним) только после того, как файл будет закрыт с помощью функции fclose ().
Таким образом, структура типовой программы обработки файла на диске (не стандартного файла) может для потока fp1, может иметь следующий вид:
# include <stdio.h>
# include <conio.h>
void main()
{ FILE fp1;
char imf[80];
// указатель на строковую костанту:
const char S[]= “ошибка при открытии потока fp1\n”;
printf(“Введите внешнее имя файла :\n”);
gets (imf);
fp1 = fopen ( imf, “обозначение_режима”);
if (fp1==NULL)
{
perror (S);
exit(0);
}
операторы_обработки_файла
close (fp1);
}
Режимы открытия файлов в потоке табл.1
№ п/п |
обозначение режима |
содержание |
дополнительные |
1 |
“w”, “wt”, “w+t”
|
Новый текстовый файл открывается для записи |
Если файл уже существовал, то предыдущее содержимое стирается, файл создается заново. Буквой t текстовый режим обозначается в некоторых компиляторах! |
2 |
“r”, “rt”, “r+t” |
Существующий текстовый файл открывается для чтения |
|
3 |
“a”, “at”, “a+t” |
Текстовый файл открывается (или создается, если файла нет) для добавления в него новых данных в конец файла |
В отличие от режима 2 режим 3 позволяет открывать уже существующий файл, не уничтожая его предыдущей версии, и записывать новую информацию в продолжение файла. |
4 |
“w+”, “wt+” |
Новый текстовый файл открывается для записи и последующих многократных изменений. Если файл уже существует. То предыдущее содержимое стирается. |
Последующие после открытия файла запись и чтение из него допустимы в любом месте файла, в том числе запись разрешена и в конец файла. |
5 |
“r+”, “rt+” |
Существующий текстовый файл открывается как для чтения, так и для записи в любом месте файла. |
В этом режиме невозможна запись в конец файла, увеличение размера файла недопустимо. |
6 |
“a+”, “at+” |
Текстовый файл открывается или создается (если файла нет) для записи и для чтения в любом месте. |
В отличие от режима 4 можно открывать существующий файл и не уничтожать его содержимого. В отличие от режима 5 в режиме 6 можно вести запись в конец файла. |
7 |
“wb”, “w+b” |
Новый двоичный файл открывается для записи |
Если файл уже существовал, то предыдущее содержимое стирается, файл создается заново. |
8 |
“rb”, “r+b” |
Существующий двоичный файл открывается для чтения |
|
9 |
“ab”, “a+b” |
Двоичный файл открывается (или создается, если файла нет) для добавления в него новых данных в конец файла |
В отличие от режима 8 режим 9 позволяет открывать уже существующий файл, не уничтожая его предыдущей версии, и записывать новую информацию в продолжение файла. |
10 |
“wb+” |
Новый двоичный файл открывается для записи и последующих многократных изменений. Если файл уже существует. То предыдущее содержимое стирается. |
Последующие после открытия файла запись и чтение из него допустимы в любом месте файла, в том числе запись разрешена и в конец файла. |
11 |
“rb+” |
Существующий двоичный файл открывается как для чтения, так и для записи в любом месте файла. |
В этом режиме невозможна запись в конец файла, увеличение размера файла недопустимо. |
12 |
“ab+” |
Двоичный файл открывается или создается (если файла нет) для записи и для чтения в любом месте. |
В отличие от режима 10 можно открывать существующий файл и не уничтожать его содержимого. В отличие от режима 11 в режиме 12 можно вести запись в конец файла. |