Операционная система MS DOS (том 2)


Буферизация ввода/вывода - часть 4


/p>

К буквам r, w, a справа могут добавляться буквы t и b.

Буква t означает, что файл будет открыт в текстовом режиме, b - в двоичном. Для двоичного режима не производится обработка таких символов, как конец строки, конец файла и т.д.

Строка режима открытия файла может дополнительно содержать символ '+'. Этот символ означает, что для файла разрешены операции чтения и записи одновременно.

Для закрытия файлов, открытых для ввода/вывода потоком, должна использоваться функция fclose():

int fclose(FILE *stream);

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

Если вы открыли файл с помощью низкоуровневой функции open(), вы можете создать поток для этого файла, используя функцию fdopen():

FILE *fdopen(int handle, char *mode);

В качестве первого параметра используется файловый индекс, полученный от функции open(),

второй параметр аналогичен парметру mode для функции fopen().

Для того чтобы закрыть поток, созданный функцией fdopen(), необходимо использовать функцию fclose(), а не close().

Для открытого потока вы можете узнать файловый индекс с помощью функции fileno():

int fileno(FILE *stream);

Функция возвращает файловый индекс, связанный с данным потоком.

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

stdin стандартное устройство ввода;
stdout стандартное устройство вывода;
stderr стандартное устройство для вывода сообщений об ошибках;
stdaux стандартное последовательное устройство ввода/вывода;
stdprn стандартное печатающее устройство.

Для работы со стандартными устройствами ввода/вывода в библиотеках трансляторов для языка программирования Си имеется соответствующий набор функций, которые должны быть вам хорошо известны - printf(), scanf(), putchar() и т.д.. Мы не будем их описывать для экономии места.




- Начало -  - Назад -  - Вперед -