Общие сведения о вводе-выводе

В Си отсутствуют встроенные операторы (операции) ввода-вывода. Для ввода-вывода используются стандартные библиотеки функций. Рассмотрим одну из стандартных библиотек ввода- вывода, большинство функций которой описаны в заголовочном файле stdio.h. Иногда функции этой библиотеки называют функциями ввода- вывода «высокого» уровня, так как эти функции не учитывают особенности конкретной архитектуры компьютера и используемой операционной системы. Эти функции присутствуют в эквивалентной форме во всех системах, поддерживающих язык Си.

Рассмотрим некоторые понятия, используемые в этой библиотеке. Основное понятие – поток ввода-вывода.

Потоком (stream) называется источник или получатель данных, который можно ассоциировать с диском или другим внешним устройством ввода- вывода. Поток можно рассматривать как последовательность байтов (символов), поток связан с некоторым устройством ввода- вывода (файл, принтер, монитор, клавиатура и др.), с которым ведется обмен. С точки зрения программы поток не зависит от устройства, с которым он связан, т.е. поток не зависит от технической реализации конкретного устройства ввода- вывода.

Классификация потоков ввода- вывода:

По направлению:

- входные;

- выходные;

- двунаправленные.

По использованию буфера в оперативной памяти:

- буферизированные;

- небуферизированные.

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

 

Оперативная память
Программа
Выводимые данные
Буфер вывода
Внешнее устройство вывода
Оперативная память
Программа
Принимающие объекты
Буфер ввода
Внешнее устройство ввода

 



Стандартные потоки ввода-вывода

Для связи потока с внешним устройством в файле stdio.h определена структура типа FILE, также определены следующие стандартные указатели на структуру типа FILE:

- stdin – стандартный поток ввода, по умолчанию клавиатура;

- stdout – стандартный поток вывода, по умолчанию монитор (консольное окно);

- stderr – стандартное устройство вывода сообщений об ошибках, по умолчанию монитор (консольное окно);

- stdaux – стандартный последовательный порт;

- stdprn – стандартный принтер.

Потоки stderr и stdaux – не буферизированы, остальные буферизированы.

 


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



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