Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Файлы.docx
Скачиваний:
1
Добавлен:
05.09.2019
Размер:
32.98 Кб
Скачать

Посимвольный ввод-вывод

В операциях посимвольного ввода-вывода происходит прием одного символа из файла или передача одного символа в файл.

Функция

Действие функции

int fgets(FILE *fp)

Чтение и возврат символа из открытого файла

int fgetchov(void)

Читает и возвращает символ из файла stdin.

int ungetc(int ch, FILE *fp)

Возвращает символ ch в файл. Следующая операция чтения символа из файла вернет этот символ.

int fputs(int ch, FILE *fp)

Записывает в файл код ch символа.

Построчный ввод-вывод.

В операциях построчного ввода-вывода за один прием происходит перенос из файла (или в файл) строк символов.

Функция

Действие функции

int gets (char *S)

Читает байты из файла stdin и записывает их в строку S до тех пор, пока не встретит символ ' \n ', который заменяется на нуль – терминатор.

int fgets (char *S int m, FILE *fp)

Извлекает байты из файла, описываемого fp, и записывает их в строку S до тех пор, пока не встретит символ ' \n ' или пока не будет считана m байтов.

int fputs (char *S, FILE *fp)

Записывает в файл байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл не переносится и на символ ' \n ' не заменяется.

int puts (char *S)

Записывает в файл, stdout байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл переносится и заменяется на символ ' \n '.

Блоковый ввод-вывод

В операциях блокового ввода-вывода работа происходит с целыми блоками информации.

Функции

Действие функции

int fread (void *ptv, int size, int n, FILE *fp)

Считывает n блоков по size байт каждый из файла fp, в область памяти, на которую указывает указатель ptv (необходимо заранее отвести память под считываемый блок).

int fwrite (void *ptv, int size, int n, FILE *fp)

Записывае n блоков по size байт каждый из области памяти, на которую указывает ptv, в открытый файл fp.

Пример работы с файлами. Следующая программа формирует целочисленный бинарный файл, дозаписывает в его окончание новые данные, и выводит сохраненные данные на печать:

#include <stdio.h>

#include <conio.h>

void main(void)

{

int a=1, b=20, c, d;

FILE *in, *out, *add;

clrscr();

/* ........ ЗАПИСЬ ЧИСЕЛ В ФАЙЛ ......*/

in=fopen("lr8.dat","wb");

fprintf(in,"%d %d \n",a,b);

fclose(in);

puts("ЧИСЛА a, b ЗАПИСАНЫ В ФАЙЛ");

puts("Press any key...");

getch();

/* ......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА ........*/

out=fopen("lr8.dat","rb");

fscanf(out,"%d%d", &c, &d);

printf("\n a=%d b=%d ", c, d);

fclose(out);

puts("\n ЧИСЛА ПРОЧИТАНЫ ИЗ ФАЙЛА");

puts("Press any key...");

getch();

/* ......... ДОПОЛНЕНИЕ ФАЙЛА ..........*/

add=fopen("lr8.dat","a");

puts("ВВЕДИТЕ ЧИСЛА ЦЕЛОГО ТИПА c и d");

scanf("%d%d",&c,&d);

fprintf(add,"%d %d \n",c,d);

printf("\n c=%d d=%d \n ",c,d);

fclose(add);

puts("ЧИСЛА c и d ДОПИСАНЫ В ФАЙЛ");

puts("Press any key...");

getch();

/* ......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА ........*/

out=fopen("lr8.dat","rb");

fscanf(out,"%d%d%d%d", &a, &b, &c, &d);

printf("\n a=%d b=%d ", a, b);

printf("\n c=%d d=%d ", c, d);

fclose(out);

puts("\n РАСШИРЕННЫЙ ФАЙЛ!");

puts("Press any key...");

getch();

}

Краткие теоретические сведения

Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки и пересылке как единое целое.

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

Это выполняет функция

fopen(“строка1”, “строка2”);

она связывает физический файл на носителе (дискета, винчестер), путь к которому указывается в строке1, например “a:Mas_dat.dat”, “d:\\work\\Sved.txt”, с логическим именем, объявленным в программе.

В строке2 указываются коды режимов доступа к открываемым файлам (табл.1).

Логическое имя – это указатель на файл, т.е. на область памяти, где храниться информация о файле. Формат объявления указателя на файл следующий:

FILE *указатель на файл;

Например:

FILE *f;

f=fopen ("d:\\work\\Dat_sp.cpp", "w");

- открывается файл Dat_sp.cpp на диске d, в каталоге work, только для записи.

Таблица 1