Основы программирования



              

Открытие файла: функция fopen - часть 2


Значения символов в строке mode сведены в следующую таблицу:

rОткрыть существующий файл на чтение
wОткрыть файл на запись. Старое содержимое файла теряется, в случае отсутствия файла он создаётся.
aОткрыть файл на запись. Если файл существует, то запись производится в его конец.
tОткрыть текстовый файл.
bОткрыть бинарный файл.
+Разрешить и чтение, и запись.

Несколько примеров открытия файлов:

FILE *f, *g, *h; . . . // 1. Открыть текстовый файл "abcd.txt" для чтения f = fopen("abcd.txt", "rt");

// 2. Открыть бинарный файл "c:\Windows\Temp\tmp.dat" // для чтения и записи g = fopen("c:/Windows/Temp/tmp.dat", "wb+");

// 3. Открыть текстовый файл "c:\Windows\Temp\abcd.log" // для дописывания в конец файла h = fopen("c:\\Windows\\Temp\\abcd.log", "at");

Обратите внимание, что во втором случае мы используем обычную косую черту / для разделения директорий, хотя в системах MS DOS и MS Windows для этого принято использовать обратную косую черту \. Дело в том, что в операционной системе Unix и в языке Си, который является для нее родным, символ \ используется в качестве экранирующего символа, т.е. для защиты следующего за ним символа от интерпретации как специального. Поэтому во всех строковых константах Си обратную косую черту надо повторять дважды, как это и сделано в третьем примере. Впрочем, стандартная библиотека Си позволяет в именах файлов использовать нормальную косую черту вместо обратной; эта возможность была использована во втором примере.

В случае удачи функция fopen открытия файла возвращает ненулевой указатель на структуру типа FILE, описывающую параметры открытого файла. Этот указатель надо затем использовать во всех файловых операциях. В случае неудачи (например, при попытке открыть на чтение несуществующий файл) возвращается ненулевой указатель. При этом глобальная системная переменная errno, описанная в стандартном заголовочном файле "errno.h, содержит численный код ошибки.В случае неудачи при открытии файла этот код можно распечатать, чтобы получить дополнительную информацию:

#include <stdio.h> #include <errno.h> . . .

FILE *f = fopen("filnam.txt", "rt"); if (f == NULL) { printf( "Ошибка открытия файла с кодом %d\n", errno ); . . . }




Содержание  Назад  Вперед