Файлы и потоки
Программа взаимодействует с целевой средой путем чтения и записи файлов. Файл может быть:
Набор данных, который можно читать и записывать многократно.
Поток байт, создаваемый программой (например, конвейер).
Поток байт, полученный из периферийного устройства или отправленный на периферийное устройство.
Последние два элемента являются интерактивными файлами. Файлы обычно являются основным средством для взаимодействия с программой. Работа со всеми этими типами файлов происходит одинаково — посредством вызова функций библиотек. Необходимо включать стандартный заголовок STDIO.H для объявления большинства этих функций.
Перед выполнением большинства операций над файлом файл должен быть открыт. Открытие файла связывает его с потоком, структурой данных в стандартной библиотеке C, которая скрывает большинство различий между файлами различных типов. Библиотека поддерживает состояние каждого потока в объекте типа FILE.
Целевая среда открывает три файла до запуска программы. Можно открыть файл путем вызова библиотечной функции fopen, _wfopen с двумя аргументами. (Функция fopen не рекомендуется к использованию, используйте вместо нее fopen_s, _wfopen_s). Первым аргументом является имя файла. Вторым аргументом является строка C, определяющая:
Предполагается ли считывание данных из файла, или запись в него данных, или и то, и то.
Предполагается ли генерация нового содержимого файла (или создание нового файла, если он не существовал до этого), или сохранение существующего содержимого.
Может ли запись в файл изменить существующее содержимое, или следует только добавить байты в конец файла.
Нужно ли работать с текстовым потоком или двоичным потоком.
Как только файл успешно открыт, можно определить, является ли поток ориентированным на байты (байтовым потоком), или ориентированным на расширенные символы (расширенный поток). Поток изначально несвязан. Вызов некоторых функций для работы над потоком делает его байтовым, а некоторые другие функции делают его расширенным. После задания поток поддерживает свою ориентацию до тех пор, пока не закрыт вызовом метода fclose или freopen.
© 1989-2001 P.J. Plauger и Jim Brodie. Все права защищены.