Объявление и инициализация переменной-указателя файла
Информация, необходимая для работы с файлами в Си, хранится в файле заголовков <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, sfcdprn, 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 (имя указателя на файл);
передвигает файловый указатель в начало файла.
Сравнение ввода-вывода для стандартных файлов с вводом-выводом в файлы, определённые пользователем
Функции доступа Функции для доступа
stdin, stdout к любому текстовому файлу
1 scanf(“%d”,& num); fscanf(infilep,”%d”,& num);
ввод одного целочисленного ↓” c: data.txt”
значения для хранения в num
из станд. потока ввода 12 data.txt
(пр: клавиатура)
2 printf(“n=%d\n”,num); fprintf(outfilep,”n=%d\n”,num);
3 ch=getchar(); ch=getc(infilep);
4putchar(ch); putc(ch,outfilep);
ПРИМЕР:
Записать в файл c:\tc\2.txt значения i,j, считать из файла c:\tc\1.txt новые значения i,j и распечатать на экране монитора
#include<stdio.h>
main()
{