|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Файловый ввод и выводОперации ввода вывода тесно связаны с конкретными устройствами. Поэтому для переносимости программ они являются одним из наиболее серьезных препятствий. Так как в СИ переносимость являлась одной из главных целей, то было реализовано несколько важных идей. Во первых, операции ввода вывода не входят в ядро языка а вынесены во внешние стандартные библиотеки. То есть компилятор ничего не знает о функциях ввода вывода. Поэтому мы вынуждены, чтобы использовать printf, подключать stdio. Во вторых, реализована идея абстрактных потоков ввода вывода. Это позволяет рассматривать любую операцию ввода выводы, просто как поток байт, несвязанный ни с каким конкретным устройством. Этот поток может быть прикреплен к некоторому устройству, а затем перенаправлен на другое устройство. Согласование выходного потока с потребностями устройства выполняется драйверами, которые являются частью ОС. При запуске программы создается несколько стандартных потоков. Стандартный поток ввода по умолчанию связан с клавиатурой, стандартный поток вывода с экраном. Файлы можно рассматривать как потоки байт. И часто бывает наоборот, когда любые потоки называют файлами. Для того чтобы начать работу с файлом, необходимо его открыть. При выполнении этой операции, ОС выполняет ряд действий, необходимых для организации потока. Суть этих действий зависит от того, как мы собираемся использовать файл. В любом случае открытие файла связано с выделением памяти, используемой для служебных целей, и назначением некоторых параметров. Файлы могут содержать текстовую или двоичную информацию. При записи текстовых файлов имеются различия между операционными системами. Например, в Unix перевод строки обозначается одним кодом, а в Windows двумя. Это нужно учитывать при обработке текстовых файлов. Двоичные файлы не должны подвергаться никаким преобразованиям. Операции ввода вывода могут быть буферизованными или небуферизованными. Буферизация обозначает, что выводимая или считываемая блоками информация записывается в некоторую промежуточную память, а не прямо на устройство. Сама операция записи или чтения происходит тогда, когда буфер будет заполнен. Буферизация помогает уменьшить накладные расходы. Для работы с файлами в СИ предлагается две библиотеки: библиотека системного уровня предназначена для системных программистов. Она позволяет описать файловые операции с тонкой настройкой, необходимой для системных программ. Но на программиста ложится вся работа, например связанная с буферизацией. Библиотека стандартного уровня используется для прикладного программирования. Она содержит функции, которые автоматически выполняют многие низкоуровневые операции. Функции стандартной библиотеки обычно имеют имена, начинающиеся с буквы f. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.) |