Для программиста открытый файл представляется как последовательность данных — считываемых данных или записываемых данных. При открытии файла с ним связывается поток. Выводимая информация записывается в поток; считываемая информация берется из потока. Когда поток открывается для ввода-вывода, он связывается со структурой типа FILE, которая определена в stdio.h. Структура содержит разнообразную информацию о файле.
При открытии файла с помощью функции /open возвращается указатель на структуру типа FILE, который можно использовать для последующих операций с файлом.
#include <stdio.h> | ||||
/^прототип | функции*/ | |||
/^находится | в | файле*/ | ||
/*stdio.h*/ | ||||
FILE | *fopen | (name, type); | ||
char | *name; | |||
char | *type; |
Функция /open открывает файл, имя которого задается аргументом пате, и связывает с ним поток для выполнения операций ввода-вывода данных. Параметр type — это указатель на строку символов, определяющих способ доступа к файлу. Возвращаемое значение функции — указатель на структуру типа FILE.
Значения аргумента type следующие:
• "г" — открыть файл для чтения (файл должен существовать);
• "w" — открыть пустой файл для записи; если файл существует, то его содержимое теряется;
• "а" — открыть файл для записи в конец (для добавления); файл создается, если он не существует;
• "г+" — открыть файл для чтения и записи (файл должен существовать);
• "w+" — открыть пустой файл для чтения и записи; если файл существует, то его содержимое теряется;
• "а+" — открыть файл для чтения и дополнения, если файл не существует, то он создаётся.
Возвращаемое значение функции /open:
1) указатель на открытый поток;
2) значение NULL, если обнаружена ошибка.
Пример.Открытие существующего файла для чтения
main()
{
FILE *f; /* f - указатель на открытый поток */
char *а, *Ь; /* а и b - указатели на строки */
cL= cL • CLcLTL }
b="r";
f=fopen(a, b);
/* или более простой вариант: */ /* f= fopen("a.dat", "r"); */
Пример
f= | fopen("a.dat" | II у, II | ) ; | ||
/* | Так лучше не | прогр | аммировать,* | / | |
/* | поскольку фун | кция | возвращает | NULL, | */ |
/* | если файл не | может | быть открыт | .*/ | |
/* | Лучше сделать | так: | */ | ||
if { | ; (if = fopen( | "a.dat","г")) != | NULL | ) | |
} else | |||||
printf("пОшибка | открытия файла!") | г |
Функция /close закрывает поток или потоки, связанные с открытыми при помощи функции/ореи файлами. Закрываемый поток определяется аргументом/
#inc | lude | <stdio | .h> |
int | fclose(f); | ||
FILE | *f; |
Возвращаемое значение:
1) значение 0, если поток успешно закрыт;
2) EOF, если произошла ошибка.