Описание функций Си


         

Fdopen



     fdopen

Функция Связывает поток с логическим номером файла.

Синтаксис #include

FILE * fdopen(int handle, char * type);

Файл, содержащий stdio.h прототип

Описание Функция fdopen связывает поток с дескриптором, полученным функциями creat, dup, dup2 или open. Тип потока должен совпадать с режимом, в котором был открыт handle.

Символьная строка type имеет одно из следующих значений:

r - открытие файла только для чтения;

w - создание файла для записи;

а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;

r+ - открытие существующего файла для обновления (чтения и записи);

w+ - создание нового файла для изменения;

a+ - открытие для присоединения; открытие (или создание, если файл не существует) для обнов- ления в конец файла.

Если данный файл открывается или создается в текс- товом режиме, вы можете приписать символ t к зна- чению параметра type (rt, w+t, и т.д.); аналогич- но, для спецификации бинарного режима вы можете к значению параметра type добавить символ b (wb,a+b, и т.д.).

Если в параметре type отсутствуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут открываться в бинарном режи- ме, иначе, если _fmode имеет значение O_TEXT, фай- лы открываются в текстовом режиме. Данные констан- ты O_... определены в файле fcntl.h.

При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть выполнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредст- венно за вводом без вмешательства функций fseek или rewind. Также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).

Возвращаемое При успешном завершении fdopen возвращает значение заново открытый поток stream. В случае ошибки, функция возвращают ноль (NULL).

Переносимость fdopen поддерживаeтся на системах UNIX.

Смотрите также Функции

Пример:

#include

#include

#include

#include

int main(void) { int handle; FILE *stream;

/* открыть файл */ handle = open("DUMMY.FIL", O_CREAT, S_IREAD|S_IWRITE);

/* теперь преобразуем его в поток */ stream = fdopen(handle, "w"); if (stream == NULL) printf("Ошибка fdopen\n"); else { fprintf(stream, "Hello, world\n"); fclose(stream); } return 0; }



Содержание  Назад  Вперед