_fdopen, _wfdopen

Associa um fluxo de um arquivo que anteriormente foi aberto para E/s de nível inferior.

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

Parâmetros

  • fd
    Descritor de arquivo do arquivo em aberto.

  • mode
    Tipo de acesso a arquivos.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o fluxo em aberto.Um valor de ponteiro nulo indica um erro.Quando ocorre um erro, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, errno um é definido como EBADF, indicando um descritor de arquivo inválido, ou EINVAL, que indica que mode era um ponteiro nulo.

Para obter mais informações sobre esses e outros códigos de erro, consulte _doserrno, errno, _sys_errlist e _sys_nerr.

Comentários

The _fdopen função associa o arquivo identificado por um fluxo de I/O fd, permitindo que um arquivo aberto para E/s de baixo nível sejam armazenados em buffer e formatado. _wfdopen é uma versão de caractere largo da _fdopen; o mode argumento para _wfdopen é uma seqüência de caracteres largos. _wfdopen e _fdopen tenham comportamento idêntico caso contrário.

Mapeamentos de rotina de texto genérica

Rotina tchar.h

_UNICODE e _MBCS não definido

_MBCS definido

_UNICODE definido

_tfdopen

_fdopen

_fdopen

_wfdopen

The mode seqüência de caractere Especifica o tipo de arquivo e o acesso ao arquivo.

O caractere de seqüência de caracteres mode Especifica o tipo de acesso solicitado para o arquivo, sistema autônomo mostrado na tabela seguinte.

  • "r"
    Será aberto para leitura.Se o arquivo não existe ou não for encontrado, o fopen Chame falhar.

  • "w"
    Abre um arquivo vazio para gravação.Se existir o arquivo fornecido, seu Sumário será destruído.

  • "a"
    É aberto para gravação no participante do arquivo (acrescentar); cria o arquivo primeiro se não existir.

  • "r+"
    Será aberto para leitura e gravação.(O arquivo deve existir).

  • "w+"
    Abre um arquivo vazio para ler e gravar.Se existir o arquivo fornecido, seu Sumário será destruído.

  • "a+"
    É aberto para leitura e acrescentando; cria o arquivo primeiro se não existir.

Quando um arquivo for aberto com o "a" ou "a+" tipo de acesso gravar todas as operações ocorrem ao participante do arquivo. O ponteiro do arquivo pode ser reposicionado fseek ou rewind, mas é sempre retornado ao participante do arquivo antes de escrever nenhuma operação é executada. Assim, os dados existentes não podem ser substituídos.Quando o "r+", "w+", ou "a+"tipo de acesso for especificado, tanto leitura e gravação são permitidos (o arquivo é considerado em aberto para "atualização"). No entanto, quando você alterna entre a leitura e gravação, deve haver um intermediárias fflush, fsetpos, fseek, ou rewind operação. A posição corrente pode ser especificada para o fsetpos ou fseek operação, se desejado.

Juntamente com os valores acima, os caracteres a seguir podem ser incluídos em mode Para especificar o modo de tradução de caracteres de nova linha.

  • t
    em em aberto em texto (convertida) modo.Nesse modo, combinações de carro return–line de feed (CR-LF) são transformadas em alimentações de linha (LF) na entrada e caracteres de LF são convertidos em combinações de CR-LF na saída.Além disso, CTRL+Z é interpretado sistema autônomo um caractere de participante de arquivo na entrada.Em arquivos abertos para leitura/gravação, fopen verifica um CTRL+Z no participante do arquivo e remove-lo, se possível. Isso é concluído porque usando o fseek e ftell podem fazer com que funções para mover dentro de um arquivo que termine com um CTRL+Z fseek se comporte incorretamente no participante do arquivo.

  • b
    em em aberto no modo binário (não traduzido); as traduções acima são suprimidas.

  • c
    Ativar o sinalizar de confirmar para o associado filename para que o Sumário do buffer de arquivo é gravado diretamente no disco se qualquer uma fflush ou _flushall é chamado.

  • n
    reiniciar o sinalizar de confirmar para o associado filenamepara "não-confirmar". Este é o padrão.Ela também substitui o sinalizar de confirmar global se você vincular o seu programa com Commode.obj.O padrão de sinalizar de confirmar global é "não-confirmar", a menos que você vincula seu programa com Commode.obj explicitamente.

  • S
    Especifica que o cache é otimizado para, mas não restrito a, acesso seqüencial do disco.

  • R
    Especifica que o cache é otimizado para, mas não restrito a, acesso aleatório do disco.

  • T
    Especifica um arquivo sistema autônomo temporário.Se possível, ele não é liberado para o disco.

  • D
    Especifica um arquivo sistema autônomo temporário.Ele é excluído quando o último descritor de arquivo é fechado.

The t, c, and n mode options are Microsoft extensions for fopen and _fdopen and should not be used where ANSI portability is desired.

If t ou b não é fornecido na mode, o modo de tradução padrão é definido pela variável global _fmode.If t ou b tem o prefixo para o argumento, a função falha e retorna NULL. Para obter uma abordagem de texto e modos de binários, consulte Texto e o modo binário E/s de arquivos.

Caracteres válido para o mode seqüência de caracteres usada na fopen e _fdopen corresponde a oflag argumentos usados na _Open and _sopen, sistema autônomo segue.

Caracteres em mode seqüência de caracteres

Equivalent oflagvalue for _open/_sopen

a

_O_WRONLY | _O_APPEND (normalmente _O_WRONLY | _O_CREAT | _O_APPEND)

a+

_O_RDWR | _O_APPEND (normalmente _O_RDWR | _O_APPEND | _O_CREAT )

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY (normalmente _O_WRONLY | _O_CREAT | _O_TRUNC)

w+

_O_RDWR (normalmente _O_RDWR | _O_CREAT | _O_TRUNC)

b

_O_BINARY

t

_O_TEXT

c

Nenhum

n

Nenhum

S

_O_SEQUENTIAL

R

_O_RANDOM

T

_O_SHORT_LIVED

D

_O_TEMPORARY

Requisitos

Função

Cabeçalho necessário

_fdopen

<stdio.h>

_wfdopen

<stdio.h> ou <wchar.h>

Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.

Exemplo

// crt_fdopen.c
// This program opens a file 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 with fclose, not _close.
   fclose( stream );
   printf( "Lines in file: %d\n", count );
}

Entrada: crt_fdopen.txt

Line one
Line two

Saída

Lines in file: 2

Equivalente do NET Framework

sistema::IO::FileStream::FileStream

Consulte também

Referência

Fluxo de E/S

_dup, _dup2

fclose, _fcloseall

fopen, _wfopen

freopen, _wfreopen

_Open, _wopen