Работа с файлами данных

Для программиста открытый файл представляется как последовательность данных — считываемых данных или записываемых данных. При открытии файла с ним связывается поток. Выводимая информация записывается в поток; считываемая информация берется из потока. Когда поток открывается для ввода-вывода, он связывается со структурой типа 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, если произошла ошибка.