Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Консольный ввод/вывод




Файлы

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

Не все файлы имеют одинаковые возможности. Например, дисковый файл поддерживает произвольный доступ, а модем - нет. Это иллюстрирует важный момент системы ввода/вывода С -все потоки одинаковы, а файлы нет.

Если файл поддерживает произвольный доступ, открытие файла инициализирует индикатор позиции файла на начало файла. По мере чтения или записи символов в файл индикатор позиции увеличивается, обеспечивая тем самым продвижение по файлу.

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

Связь потока с файлом уничтожается с помощью операции закрытия. Закрытие потока вызывает принудительный сброс всего содержимого буфера во внешнее устройство (если необходимо, информация будет дополнена для создания полного сектора). Данный процесс, как правило, называется очисткой буфера, и он гарантирует, что в буфере не останется информации. Все файлы закрываются автоматически, когда программа нормальным образом завершает работу, выходя из функции main() или с помощью вызова exit(). Тем не менее, лучше самому закрыть файлы, используя fclose() в тот момент, когда файл уже не нужен, поскольку некоторые события могут помешать записи буфера на диск. Например, файл не записывается, если программа завершает работу вызовом abort(), если она разрушается или если пользователь выключает компьютер перед завершением программы.

В начале работы программы открыты пять предопределенных текстовых потоков: stdin, stdout, stderr, stdaux и stdprn. Они соответствуют следующим стандартным устройствам ввода/вывода:

Поток Устройство
stdin stdout stderr stdaux stdprn Клавиатура Экран Экран Первый последовательный порт Принтер

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

Каждый поток, ассоциированный с файлом, имеет структуру управления файлом типа FILE. Данная структура определена в заголовочном файле stdio.h. Не следует модифицировать данную структуру.

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

Консольный ввод/вывод относится к событиям, возникающим от клавиатуры или на экране. Поскольку ввод и вывод на консоль - это типичные операции, была создана подсистема файловой системы ввода/вывода ANSI С для работы исключительно с консолью. Эти функции направляют операции в стандартный ввод (stdin) и стандартный вывод (stdout) системы. Возможно перенаправить консольный ввод на другие устройства. Для простоты обсуждения предполагается, что консоль - это устройство, используемое стандартными способами.




Поделиться с друзьями:


Дата добавления: 2013-12-14; Просмотров: 427; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.