Операционная система MS-DOS© Александр Фролов, Григорий ФроловТом 1, книга 3, М.: Диалог-МИФИ, 1992. 3.9. Другие функции для работы с файламиВ задачу данной книги не входит описание всех функций стандартных библиотек трансляторов Microsoft QC 2.5 и C 6.0, предназначенных для работы с дисками и файловой системой. Но мы приведем еще несколько интересных и полезных на наш взгляд функций. Как мы уже отметили, программа может использовать два режима ввода/вывода для файлов - текстовый и двоичный. Для переключения этого режима для открытого файла можно использовать функцию 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. |