_fdopen, _wfdopen

Поток связывает с файлом, который ранее был открыт для ввода-вывода низкого уровня.

FILE *_fdopen(  
   int fd,
   const char *mode 
);
FILE *_wfdopen( 
   int fd,
   const wchar_t *mode 
);

Параметры

  • fd
    Дескриптор файла открытого файла.

  • mode
    Тип доступа к файлу.

Возвращаемое значение

Каждая из этих функций возвращает указатель на открытии потока.Значение указателя null указывает на ошибку.При возникновении ошибки вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если выполнение может продолжить работу, errno устанавливается либо EBADF, указывает на неверный дескриптор, или EINVAL, указывает, что mode был указатель null.

Дополнительные сведения об этих и других кодов ошибок см. _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

_fdopen Функция связывает поток ввода-вывода с файлом, который идентифицируется по fdи таким образом файл, который открыт для вывода низкого уровня в буфер и отформатирован._wfdopenМногобайтовая знаковая версия _fdopen; mode аргумент _wfdopen — строка двухбайтовых знаков._wfdopenи _fdopen в противном случае ведут себя одинаково.

Универсальные текстовые сопоставления подпрограммы

Подпрограммы в файле Tchar.h

_UNICODE и _MBCS не определен

Определен символ _MBCS

Определенные _UNICODE

_tfdopen

_fdopen

_fdopen

_wfdopen

mode Символьная строка определяет тип файла и доступ к файлам.

Строка символов mode указывает тип доступа для файлов, как показано в следующей таблице.

  • "r"
    Открывает для чтения.Если файл не существует или не удается найти fopen вызов завершается с ошибкой.

  • "w"
    Откроется пустой файл для записи.Если данный файл существует, ее содержимое удаляются.

  • "a"
    Открывает для записи в конец файла (добавления).Создает файл, если он не существует.

  • "r+"
    Открывает для чтения и записи.(Файл должен существовать).

  • "w+"
    Откроется пустой файл для чтения и записи.Если данный файл существует, ее содержимое удаляются.

  • "a+"
    Открывает для чтения и добавления.Создает файл, если он не существует.

При открытии файла с "a" или "a+" доступ к типу, все записи операции выполняются в конце файла.Указатель на файл можно перемещать с помощью fseek или rewind, но он всегда перемещается обратно в конец файла перед любую запись, выбранная операция.Таким образом Невозможно перезаписать существующие данные.При "r+", "w+", или "a+" указан тип доступа, разрешенные чтения и записи (файл считается открытым для «обновление»).Однако при переходе от чтения и записи должно быть вмешательства fflush, fsetpos, fseek, или rewind операции.Можно задать текущую позицию для fsetpos или fseek операции, если требуется.

В дополнение к выше значения, следующие символы также могут быть включены в mode для указания режима преобразования символов новой строки.

  • t
    Откройте в текстовом (перевести) режиме.В этом режиме каретки сочетания каналов возврат строки (CR-LF) преобразуются в каналы одной строки (LF) на входе и символы LF, преобразуются в комбинации символов CR-LF на выходе.Кроме того Ctrl + Z, интерпретируется как символ конца файла на входе.В файлах, открытых для чтения/записи fopen проверяет Ctrl + Z в конце файла и удаляет его, если это возможно.Это делается потому, что с помощью fseek и ftell функции для перемещения внутри файла, который заканчивается Ctrl + Z может привести к fseek работать неправильно в конце файла.

  • b
    Открытие в двоичном режиме (непереведенные).Любые переводы из t режиме, подавляются.

  • c
    Включить флаг фиксации для связанных filename таким образом, чтобы содержимое файла буфера записывается непосредственно на диск, если fflush или _flushall называется.

  • n
    Сбросить флаг фиксации для связанных filename на «нет commit». Это значение по умолчанию.Он также переопределяет фиксации глобальный флаг, если связь программы с помощью Commode.obj.По умолчанию флаг глобальной фиксации «нет commit» пока явное связывание программы с помощью Commode.obj.

The t, c, and nmode options are Microsoft extensions for fopen and _fdopen.Не используйте их, если вы хотите сохранить мобильность ANSI.

Если t или b не указан mode, режим преобразования по умолчанию определяется как глобальная переменная _fmode.Если t или b префиксом аргумента функции и возвращает NULL.Обсуждение текст и двоичные режимы просмотра текста и двоичный режим файлового ввода -вывода.

Допустимые символы для mode строку, используемую в fopen и _fdopen соответствуют oflag аргументы, используемые в _open и _sopen, как показано ниже.

Знаки в mode строки

Equivalent oflagvalue for _open/_sopen

a

_O_WRONLY | _O_APPEND(usually _O_WRONLY | _O_CREAT | _O_APPEND)

a+

_O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT )

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY(usually _O_WRONLY | _O_CREAT | _O_TRUNC)

w+

_O_RDWR(usually _O_RDWR | _O_CREAT | _O_TRUNC)

b

_O_BINARY

t

_O_TEXT

c

None

n

None

Требования

Функция

Обязательный заголовок

_fdopen

<stdio.h>

_wfdopen

<stdio.h> или <wchar.h>

Дополнительные сведения о совместимости см. Совместимость.

Пример

// crt_fdopen.c
// This program opens a file by using low-level
// I/O, then uses _fdopen to switch to stream
// access. It counts the lines in the file.


#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>

int main( void )
{
   FILE *stream;
   int  fd, count = 0;
   char inbuf[128];

   // Open a file.
   if( _sopen_s( &fd, "crt_fdopen.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
      exit( 1 );

   // Get stream from file descriptor.
   if( (stream = _fdopen( fd, "r" )) == NULL )
      exit( 1 );

   while( fgets( inbuf, 128, stream ) != NULL )
      count++;

   // After _fdopen, close by using fclose, not _close.
   fclose( stream );
   printf( "Lines in file: %d\n", count );
}

Входные данные: crt_fdopen.txt

Line one
Line two

dye30d82.collapse_all(ru-ru,VS.110).gifOutput

Lines in file: 2

Эквивалент в .NET Framework

System::IO::FileStream::FileStream

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

_dup, _dup2

fclose, _fcloseall

fopen, _wfopen

freopen, _wfreopen

_open, _wopen