Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Fdopen

CuBook05

Функция

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

#include<stdio.h>
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, и т.д.). При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть выполнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредственно за вводом без вмешательства функций fseek или rewind. Также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).
 
Возвращаемое значение

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

Поддерживается в системах UNIX.
 
Пример

#include<sys\stat.h>
#include <stdio.h>
#include <fcntl.h>
#include<io.h>

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;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий