MS-DOS для программиста

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


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

Как мы уже отметили, программа может использовать два режима ввода/вывода для файлов - текстовый и двоичный. Переключение этого режима для открытого файла можно выполнять с помощью функции 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.



Содержание раздела