конспект лекций, вопросы к экзамену

Открытие и закрытие потоков. Функция fopen и режимы открытия файлов

функцией открытия потока, функцией 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 можно вести запись в конец файла.

03.08.2017; 08:00
просмотров: 181