(рисунок на 7 странице коричневой методички)
Устройства внешней памяти в общем случае являются устройствами поблочного обмена, т. е. за одно обращение к устройству производится считывание или запись фиксированной порции данных, которая размещается в буфере операционной системы - участок оперативной памяти, в который помещается часть информации из файла или из которого передается в файл информация. Чаще всего минимальной порцией данных, участвующих в обмене с внешней памятью, являются блоки в 512 или в 1024 байта. При вводе с диска (при чтении из файла) данные помещаются в буфер, а затем побайтно или определенными порциями передаются в зону обработки программы пользователя. При выводе данных они накапливаются в буфере, а при заполнении буфера записываются в виде единого блока на диск за одно обращение к последнему. Таким образом, пересылки между буферами ввода-вывода и выполняемой программой обработки файла происходят достаточно быстро в отличие от реальных обменов с физическими устройствами. Такая технология позволяет обрабатывать данные различных размеров и форматов. В связи с этой технологией появился термин «поток»:Поток-это файл вместе с представляемыми средствами буферизации.
Функции библиотеки ввода – вывода позволяют производить следующие действия при работе с потоком:
- Открывать и закрывать потоки (связывать указатели на потоки с конкретными файлами);
- Вводить и выводить: символ, строку, форматированные данные, порцию данных произвольной длины;
- Анализировать ошибки потокового ввода – вывода и условие достижения конца потока (конца файла);
- Управлять буферизацией потока, в частности, размером буфера;
- Получать и устанавливать указатель (индикатор) текущей позиции в потоке.
Для того, чтобы можно было использовать функции библиотеки ввода-вывода языка Си, в программу необходимо включить заголовочный файл <stdio.h> (# include <stdio.h>), который содержит прототипы функций ввода – вывода, а также определения констант, типов и структур, необходимых для работы функций с потоком.
Дескриптор – это целое число, характеризующее размещение информации об открытии файла во внутренних таблицах операционной системы.