fdopen – открытие потока данных по дескриптору файла.
Синтаксис:
#include < stdio.h >
FILE *fdopen (int *filed, const char *mode);
Аргументы:
filed – дескриптор файла.
mode – указатель на строку содержащую режим доступа к открытому файлу.
Возвращаемое значение:
Указатель на управляющую таблицу открытого потока данных, если открытие файла произошло успешно.
NULL – если при открытии файла произошла ошибка. В переменную errno будет записан код ошибки.
Описание:
Функция fdopen создает поток данных и связывает его с файлом описанным дескриптором filed. Режим доступа, указываемый в аргументе mode должен совпадать с режимом доступа к файлу, на который указывает дескриптор filed.
Предусмотрены следующие режимы доступа:
r или rb – чтение из файла.
w или wb – запись в файл. Запись начнется с начала файла и существующие данные будут перезаписаны. Чтобы продолжить запись с конца файла используйте режим доступа a или ab или a+ или ab+ или a+b.
a, ab, a+, ab+ или a+b – записи в конец файла.
r+, rb+, r+b, w+, wb+ или w+b – чтение и запись в файл. Запись или чтение начнется с начала файла. При записи существующие данные будут перезаписаны. Чтобы продолжить запись с конца файла используйте режим доступа a или ab или a+ или ab+ или a+b.
Пример:
В примере открывается с помощью функции open() файл с именем test.txt, располагающейся в папке myfile (папка создана до запуска программы и располагается в директории, из которой запускается программа) с разрешением записи и чтения. Функция open() возвращает дескриптор открытого файла.
С помощью функции fdopen(), по дескриптору файла, с файлом связывается поток данных для чтения и записи в файл. Затем в файл записывается строка «Тест записи в файл» и файл закрывается. Отчет о работе выводится на консоль.
#include < stdio.h > //Для puts, printf, fprintf, fdopen
#include < fcntl.h > //Для open
#include < fcntl.h > //Для определения константы O_RDWR
int main (void)
{
// Переменная, в которую будет сохранен указатель
// на управляющую таблицу открываемого потока данных
FILE *mf;
// Переменная, в которую будет сохранен дескриптор открытого файла
int dfile = -1;
//Открытие файла для записи и чтения
printf (“Открытие файла: ”);
dfile = open (“myfile/test.txt”,O_RDWR);
// Проверка открытия файла
if (dfile == -1) printf (“ошибка\n”);
else printf (“выполнено\n”);
// Привязка к открытому файлу потока данных
printf (“Привязка потока данных: ”);
mf = fdopen (dfile,”r+”);
// Проверка привязки потока данных
if (mf == NULL) printf (“ошибка\n”);
else printf (“выполнено\n”);
//Запись данных в файл
fprintf (mf,“Тест записи в файл”);
printf (“Запись в файл выполнена\n”);
// Закрытие файла
printf (“Закрытие файла: ”);
if ( fclose (mf) == EOF) printf (“ошибка\n”);
else printf (“выполнено\n”);
return 0;
}
| |
Результат:
Вывод на консоль:
Открытие файла: выполнено
Привязка потока данных: выполнено
Запись в файл выполнена
Закрытие файла: выполнено
|
Содержимое файла:
Смотри так же:
fclose
fcloseall
fdopen
fileno
fopen
freopen
|