Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера

Операционная система MS-DOS

© Александр Фролов, Григорий Фролов
Том 1, книга 3, М.: Диалог-МИФИ, 1992.

[Назад] [Содеожание] [Дальше]

3.9. Другие функции для работы с файлами

В задачу данной книги не входит описание всех функций стандартных библиотек трансляторов Microsoft QC 2.5 и C 6.0, предназначенных для работы с дисками и файловой системой. Но мы приведем еще несколько интересных и полезных на наш взгляд функций.

Как мы уже отметили, программа может использовать два режима ввода/вывода для файлов - текстовый и двоичный. Для переключения этого режима для открытого файла можно использовать функцию setmode():

int setmode(int handle, int mode);

Первый параметр - файловый индекс. Второй параметр может принимать два значения:

O_TEXT установить текстовый режим;
O_BINARY установить двоичный режим.

Функция setmode() должна вызываться перед началом ввода/вывода в открытый файл.

Мы рассказывали о позиционировании внутри файла. Если вам нужно просто установить указатель позиции на начало файла, открытого для потокового ввода/вывода, вы можете воспользоваться функцией rewind():

void rewind(FILE *stream);

Если вам нужно переназначить ввод/вывод для стандартных устройств (потоков stdin, stdout, stderr), вы можете использовать функцию freopen():

FILE *freopen(char *filename, char *mode, FILE *stream);

Функция freopen() закрывает файл, с которым был связан поток stream, и переназначает этот поток файлу, определенному параметром filename. Параметр mode задается так же, как и для функции fopen().

Можно переназначить файловый индекс для файла, открытого функцией open(). Для этого можно воспользоваться одной из двух функций - dup() или dup2():

int dup(int handle);

int dup2(int handle1, int handle2);

Первая функция связывает с открытым файлом еще один файловый индекс. Этот индекс она возвращает при успешном завершении. В случае ошибки она возвращает значение -1.

Новый файловый индекс может быть использован для любых операций над файлом.

Функция dup2() переназначает файловый индекс handle2, связывая его с тем же файлом, которому соответствует файловый индекс handle1. Если во время вызова функции dup2() с файловым индексом handle2 связан какой-либо открытый файл, этот файл закрывается. В случае успешного завершения функция dup2() возвращает нулевое значение. Если произошла ошибка, возвращается значение -1.

[Назад] [Содеожание] [Дальше]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016