Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
http.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

Ввод, вывод, потоки и файлы

Язык С не определяет ключевые слова, отвечающие за ввод или вывод. Вместо этого ввод/вывод реализуется с помощью библиотечных функций. Для программ на С Borland С++ поддерживает три системы ввода/вывода:

  • систему ввода/вывода стандарта ANSI С

  • систему ввода/вывода типа UNIX

  • некоторые низкоуровневые, определенные для платформы, функции ввода/вывода

В данном разделе сайта обсуждается система ввода/вывода стандарта ANSI С. Причина этого двоякая. Во-первых, система ввода/вывода стандарта ANSI С достаточно широко используется. Во-вторых, она полностью переносима на любые платформы.

Целью данного раздела является предоставление обозрения системы для демонстрации способа работы функций ядра. Библиотека ввода/вывода ANSI С содержит богатый ассортимент функций ввода/вывода - больше, чем можно рассмотреть здесь. Функций, представленных в данном разделе, достаточно для большинства случаев.

Надо помнить, что прототипы некоторых предопределенных типов и констант, библиотечных функций ввода/вывода ANSI С находятся в файле stdio.h.

Ввод/вывод С против С++

Для начала необходимо ответить на важный вопрос: поскольку С является основой С++, как соотносится система ввода/вывода С и система ввода/вывода С++?

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

  • В течение нескольких лет С и С++ будут сосуществовать вместе. Многие программисты будут создавать гибриды программ на С и С++. Более того, будет наиболее типично программы на. С «модернизировать» до программ на С++. Следовательно, необходимо знание системы ввода/вывода как С, так и С++. Например, для замены функций ввода/выврда С на объектно-ориентированные функции С++, следует знать, как действуют обе системы ввода/вывода.

  • Понимание основных принципов, положенных в основу системы ввода/вывода ANSI С, поможет понять объектно-ориентированную систему ввода/вывода С++. (Они обе используют общие концепции.)

  • В некоторых ситуациях может быть легче использование необъектно-ориентированного подхода С к вводу/выводу, чем подхода, предлагаемого С++.

Дополнительно существует неписаное правило, что любой программист на С++ должен быть также программистом на С. Профессиональные горизонты того, кто не знает, как использовать систему ввода/вывода С, будут ограничены.

Потоки и файлы

Фундаментом понимания системы ввода/вывода С (и С++) являются концепции потоков и файлов. Система ввода/вывода С поддерживает постоянный интерфейс независимо от устройства, к которому обращается программист. То есть система ввода/вывода С предоставляет уровень абстракции между программистом и аппаратурой. Данная абстракция называется потоком, а собственно устройство называется файлом. Важно знать, как они между собой взаимодействуют.

Потоки

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]