Текстовые файлы с буферизацией

Функции fopen() и fclose() работают с текстовыми файлами с " буферизацией ". Под буферизацией мы понимаем, что вводимые и выводимые данные запоминаются во временной области памяти, называемой буфером. Если буфер заполнился, содержимое его передается в блок, и процесс буферизации начинается снова. Одна из основных задач fclose() заключается в том, чтобы освободить любые частично заполненные буферы, если файл закрыт. Текстовым считается файл, в котором информация запоминается в виде символов в коде ASCII или аналогичном. Текстовый файл отличается от двоичного файла, который обычно используется для запоминания кодов машинного языка.

Ввод-вывод текстового файла: getc(), putc()

Две функции getc() и putc() работают аналогично функциям getchar() и putchar() (описанным в предыдущих лекциях). Разница заключается в том, что вы должны сообщить, какой файл следует использовать.

char ch;ch=getchar();

предназначена для получения символа от стандартного ввода, а

ch=getc(in);

- для получения символа от файла, на который указывает in.

putchar(ch);

выводит символ на стандартный файл вывода.

putc(ch,t);

предназначена для записи символа ch в файл, на который ссылается указатель t типа FILE.

Ввод-вывод файла: fprintf(), fscanf(), fgets(), fputs()

Все функции ввода-вывода, которые мы использовали в предыдущих лекциях, имеют аналоги для ввода-вывода файла. Основное отличие состоит в том, что нам нужно использовать указатель типа FILE, чтобы сообщить функциям с каким файлом им следует работать. Подобно getc() и putc() эти функции используются после функции fopen(), открывающей файл, и перед fclose(), закрывающей его.

Функции fprintf() и fscanf()

Эти функции ввода-вывода работают почти как printf() и scanf() (см. лекцию 4), но им нужен дополнительный аргумент для ссылки на сам файл. Он является первым в списке аргументов. Пример, иллюстрирующий обращение к этим функциям:

#include <stdio.h>main(){ FILE *fi; int age; fi=fopen("File","r"); /* считывание */ fscanf(fi,"%d",&age); /* fi указывает на File */ fclose(fi); fi=fopen("Data", "a"); /*дополнение*/ fprintf(fi,"Data is %d.\n",age); /*fi указывает на Data*/ fclose(fi);}

В отличие от getc() и putc() эти функции получают указатель типа FILE в качестве первого аргумента.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: