63. Понятие потока.
Поток – байтовая последовательность, передаваемая в процессе ввода-вывода.
Поток должен быть связан с каким-либо устройством или файлом на диске. В терминологии Си это звучит так: поток должен быть направлен на какое-то устройство или файл. Любой файл рассматривается как байтовая последовательность:
байт0 байт1 байт2……………………………EOF
EOF является стандартной константой – признаком конца файла.
Система ввода/вывода языка Си поддерживает интерфейс, не зависящий от того, какое в действительности используется физическое устройство ввода/вывода, то есть абстрактный уровень между программистом и физическим устройством. Эта абстракция и называется потоком. Способ же хранения информации на физическом устройстве называется файлом.
Несмотря на то, что устройства очень разные (терминал, дисководы, магнитная лента и др.), стандарт ANSI языка Си связывает каждое из устройств с логическим устройством, называемым потоком. Так как потоки не зависят от физических устройств, то одна и та же функция может записывать информацию на диск, на магнитную ленту или выводить ее на экран.
В языке Си существует два типа потоков: текстовый (text) и двоичный (binary).
Текстовый поток – это последовательность символов. Однако, символы, которые передаются в поток и выводятся на экран не всегда взаимооднозначно соответствуют друг другу. Некоторые символы, например, возврат каретки или символ табуляции присутствуют в файле, но на экране как бы теряются.
Двоичный поток – это последовательность байтов, которые взаимооднозначно соответствуют тому, что находится на внешнем устройстве.
Поток может быть связан с файлом с помощью оператора открытия файла. Как только файл открыт, то информация может передаваться между ним и Вашей программой.
Не все файлы одинаковы. К примеру, из файла на диске Вы можете выбрать 5-ую запись или заменить 10-ую запись. В то же время в файл, связанный с печатающим устройством, информация может передаваться только последовательно в том же порядке. Это иллюстрирует самое главное различие между потоками и файлами: все потоки одинаковы, что нельзя сказать о файлах.
Операция открытий файла связывает поток с определенным файлом. Операция закрытия файла разрывает эту связь. Если поток был открыт для вывода, то при выполнении операции закрытия файла соответствующий буфер памяти записывается на внешнее устройство. Если программа закончила работу нормально, то все файлы автоматически закрываются.
Каждый поток, связанный с файлом, имеет управляющую структуру, называемую FILE. Она описана в заголовочном файле stdio.h.
В файловой системе языка Си в начале выполнения каждой программы автоматически открываются 5 предопределенных потоков. Три из ник относятся к стандартным потокам: stdin – стандартный поток ввода, stdout – стандартный поток вывода, stderr – стандартный поток ошибок. Обычно эти потоки направляются к консоли (как известно, консоль это клавиатура+дисплей). Но можно перенаправлять их на другое устройство, в тех операционных системах, которые поддерживают перенаправление. Перенаправление ввода/вывода поддерживаются такими операционными системами, как Windows, DOS, UNIX, OS/2.
- 1.История создания языка с.
- 2. Основные характеристики алгоритмического языка Си.
- 3. Область применения и системы программирования языка Си.
- 4. Исходные и объектные модули, процессы компиляции и связывания.
- 5. Алфавит языка Си. Лексемы
- 6. Ключевые слова языка Си.
- 7. Знаки пунктуации, специальные символы и знаки операций в языке Си.
- 8. Идентификаторы в языке Си.
- 9. Виды констант в языке Си.
- 10. Константы целые и вещественные.
- 11. Символьные константы.
- 12. Строковые константы.
- 13. Типы данных: целый, вещественный, символьный.
- 14. Представление данных в оперативной памяти. Размеры данных.
- 15. Правила определения переменных в программе. Инициализация переменных.
- 16. Определение именованных констант. Спецификация типов.
- 17. Выражения: математические, логические, текстовые.
- 18. Унарные операции.
- 19. Классификация бинарных операций.
- 20. Арифметические и поразрядные операции.
- 21. Операции сдвига.
- 22. Операции отношения, логические операции.
- 23. Операции присваивания.
- 24. Условная трехместная операция.
- 25. Преобразование типов.
- 26. Приоритет операций и порядок вычисления выражений.
- 27. Функция форматированного вывода printf.
- 28. Функция форматированного ввода информации scanf.
- 29. Понятие оператора. Оператор простой и составной, блок.
- 30. Виды управляющих конструкций программы.
- 31. Операторы ветвления, условный оператор.
- 32. Метки и переходы. Пустой оператор. Оператор выбора (переключатель).
- 33. Структурные схемы циклических процессов.
- 34. Операторы цикла: цикл с заданным числом повторений.
- 35. Операторы цикла: цикл с предусловием.
- 36. Операторы цикла. Цикл с постусловием.
- 37. Операторы прерывания и продолжения цикла. Вложенные циклы.
- 38. Одномерные и многомерные массивы, их инициализация.
- 39. Указатели. Связь между указателями и массивами.
- 40. Операции над указателями.
- 41. Массивы переменных размеров. Функции использования динамической памяти.
- 42. Определение функций. Программирование с использованием функций. Возвращение значения: оператор return.
- 43. Аргументы функции: формальные и фактические. Передача аргументов, стек.
- 44. Указатели на функции. Массивы указателей на функции. Указатель на функцию в качестве аргумента другой функции.
- 45. Рекурсивные программы.
- 46. Функции для работы со строками: сравнение, копирование.
- 47. Функции для работы со строками: поиск в строке.
- 48. Функции для работы со строками: преобразование форматов.
- 49. Декларация структур.
- 50. Инициализация и доступ к элементам структуры.
- 51. Вложенные структуры и массивы структур.
- 52. Указатели на структуры.
- 53. Использование структур в качестве аргументов функций.
- 54. Объединения и битовые поля.
- 55. Локальные и глобальные переменные.
- 56. Классы памяти.
- 57. Автоматические и регистровые переменные.
- 58. Внешние и статические переменные, особенности их реализации.
- 59. Символические константы: #define. Включение файла: #include.
- 60. Директивы препроцессора: #if, #ifdef, #ifndef, #else, #endif.
- 61. Файлы. Двоичное и текстовое представление файлов.
- 62. Стандартные файлы (потоки).
- 63. Понятие потока.
- 64. Открытие и закрытие файлов.
- 65. Операции файлового ввода-вывода.
- 66. Позиционирование. Указатель чтения –записи в файле.
- 67. Организация низкоуровневого ввода-вывода.
- 68. Функции обслуживания файлов низкоуровневого ввода-вывода.