Объявление и инициализация переменной-указателя файла

Информация, необходимая для работы с файлами в Си, хранится в файле заголовков <stdio.h>. В нем посредством оператора typedef определен тип данныхFILE. Фактически это описание структуры, тип которой имеет имяFILE. Она предназначена для хранения сведений о файле.

 

Указатели на файлы объявляют следующим образом:

FILE *имя_указтеля_на_файл1,

*Имя_указателя_на_файл2 ,...,

*имя_указателя_на_файлN;

 

Указатель на файл- адрес структуры, содержащей информацию, необходимую для доступа к файлу ввода-вывода.

Функция, открывающая фаил,возвращает значение указателя на структуру типаFILE. Это значение надо присвоить указателю на файл:

Имя_указателя_на_файл =fopen(внешнее имя,

режим обработки файла)[;]

 

 

Здесь внешнее имя — строковое данное, представляющее собой имя файла на диске (дискете) или логическое устройство (например, "ргn").

Режим обработки файла — также строка, которая может принимать одно из следующих значений:

"r" — чтение существующего файла;

''w" — запись в файл (существующий файл будет стерт);

"а" — добавление в конец файла (если файла нет, он создается),

Можно открыть файл и для чтения, и для записи. Тогда режим обработки файла должна быть одна из строк "r+", "w+" или "a+". По умолчанию файл является текстовым.

Явно текстовый файл объявляют добавлением к режиму обработки символа t, а двоичный -символа b (например, "г+b" или "гb+").

Текстовый файл состоит из последовательности символов, разбитой на строки с помощью управляющего символа \n. Двоичный файл — это последовательность символов в двоичном формате.

 

ПРИМЕР

FILE *infilep,*outfilep;

infilep=fopen(“c:\data.txt”,”r”);

outfilep=fopen(“c:\results.txt”,”w”);

 

 

Функцияfopenвозвращает файловый указатель, который представляет адрес структуры типа FILE,содержащей информацию, необходимую для доступа к файлу.

Если функция fopen не может выполнить операцию, возвращаемый ею файловый указатель:NULL(stdio.h).

Значение указателя ==null=> называется нулевым указателем (null pointer).

!!!! Не путать с null(‘\0’).

 

ПРИМЕР

if (infilep==null)

printf(“не открывается c:\data.txt\n”);

 

Функция

fclose (имя указателя на файл)[;]

закрывает файл. Результатом ее выполнения будет 0 — отключение связи между указателем на файл и внешним набором данных завершено успешно или, в противном случае, — значениеEOF.

Define EOF (—1) используется для проверки конца файла, как правило, при посимвольном чтении из файла; при построчном вводе для определения конца файла обычно применяют значениеNULL, так как при достижении конца файла будет получен нулевой ).

ПРИМЕР

fclose(infilep);

 

Все открытые файлы, кроме системных (stdin, stdout, stdprn, stderr и stdaux),можно закрыть посредством одного вызова функции

fcloseall()[;]

Она возвращает либо число закрытых файлов, либо значениеEOF.Типы обеих функций —int.

 

Функция

fflush (имя указателя на файл)[;]

возвращает 0, если успешно выполнена очистка буфера, в противном случае значение функции естьEOF.

 

Функция

feof(имя указателя на файл)[;]

возвращает ненулевое значение, если файловый указатель достиг конца файла, в противном случае значение функции равно 0.

 

Функцииfgetc, fputc, fgetchar и fputchar предназначены для передачи символов.

 

Функция

fgetc(имя указателя на файл)[;]

читает символ из файла и преобразует его к типу int.

В случае ошибки ввода или при конце файла функция возвращает значениеEOF.

 

Функция

fputc(символьная переменная, имя указателя на файл)[;]

пишет значение символьной переменной в файл. Если запись прошла успешно, она возвращает int-значение символьной переменной; в противном случае значение функции есть EOF.

 

Функция

fgets (строковая переменная,имя указателя на файл)[;]

вводит строку из файла. Ее символы считываются в строковую переменную пока не будет выполнено одно из условий:

1. Начнется новая строка.

2. Достигнут конец файла.

 

Функция

fputs(строковая переменная, имя указателя на файл)[;]

пишет строку в файл. Если запись прошла успешно, она возвращает int-значение последнего записанного символа строковой переменной; в противном случае ее значение естьEOF.

 

Функция

fscanf(uмя указателя на файл, "список форматов "[, список ввода])[;]

выполняет форматное чтение данных из файла. Если ввод произведен успешно, значением функции будет число введенных данных; при конце файла функция возвращает значениеEOF. Эта функция так же, как и функцияscanf, не умеет читать строки, содержащие пробелы.

 

 

Функция

fprintf (имя указателя на файл,

"список форматов"[, список вывода])[;]

выполняет форматную запись данных в файл. Если вывод сделан успешно, значением функции будет число переданных символов (байтов); в случае ошибки функция возвращает значениеEOF.

 

Функция

rewind (имя указателя на файл);

передвигает файловый указатель в начало файла.