MS-DOS для программиста© Александр Фролов, Григорий ФроловТом 19, М.: Диалог-МИФИ, 1995, 253 стр. 3.10. Другие функции для работы с файламиВ задачу данной книги не входит описание всех функций стандартных библиотек трансляторов Borland C++, Microsoft Quick C или аналогичных, предназначенных для работы с дисками и файловой системой. Но мы приведем еще несколько интересных и полезных на наш взгляд функций. Как мы уже отметили, программа может использовать два режима ввода/вывода для файлов - текстовый и двоичный. Переключение этого режима для открытого файла можно выполнять с помощью функции setmode : int setmode (int handle, int mode); Первый параметр - идентификатор файла. Второй
параметр может принимать два значения:
Функция 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. |