_fdopen, _wfdopen

Associa um fluxo de um arquivo que foi aberto anteriormente para i/O baixo nível.

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

Parâmetros

  • fd
    Arquivo de descritor de arquivo aberto.

  • mode
    Tipo de acesso de arquivo.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o fluxo 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 execução tiver permissão para continuar, errno é definir EBADF, que indica um descritor de arquivo incorreto ou EINVAL, que indica que mode foi 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

O _fdopen função associa um fluxo de i/O com o arquivo identificado por fde assim permite que um arquivo é aberto para nível baixo e/S em buffer e formatado._wfdopené uma versão de caractere largo de _fdopen; o mode argumento para _wfdopen é uma seqüência de caracteres largos._wfdopene _fdopen contrário tenham comportamento idêntico.

Mapeamentos de rotina de texto genérico

Rotina TCHAR.h

Unicode e MBCS do arquivo não definido

MBCS do arquivo definido

Unicode definido

_tfdopen

_fdopen

_fdopen

_wfdopen

O mode seqüência de caracteres Especifica o tipo de arquivo e acesso ao arquivo.

A seqüência de caracteres mode Especifica o tipo de acesso solicitado para o arquivo, como mostrado na tabela a seguir.

  • "r"
    É aberto para leitura.Se o arquivo não existe ou não for encontrado, o fopen chamada falhar.

  • "w"
    Abre um arquivo vazio para gravação.Se o arquivo existir, seu conteúdo é destruído.

  • "a"
    É aberto para gravação no final do arquivo (acrescentar).Cria o arquivo se ele não existe.

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

  • "w+"
    Abre um arquivo vazio para leitura e gravação.Se o arquivo existir, seu conteúdo é destruído.

  • "a+"
    É aberto para leitura e acrescentando.Cria o arquivo se ele não existe.

Quando um arquivo é aberto com o "a" ou "a+" acesso tipo, tudo gravar operações ocorrerem no final do arquivo.O ponteiro do arquivo pode ser reposicionado usando fseek ou rewind, mas ele é sempre movido para o final do arquivo antes de qualquer gravação operação é executada.Assim, os dados existentes não podem ser substituídos.Quando o "r+", "w+", ou "a+" tipo de acesso é especificado, leitura e gravação são permitidas (o arquivo disse estar aberto para "update").No entanto, quando você alterna entre a leitura e gravação, deve haver um interveniente fflush, fsetpos, fseek, ou rewind operação.Você pode especificar a posição atual para o fsetpos ou fseek operação, se você quiser.

Com os valores acima, os caracteres a seguir podem ser incluídos em mode para especificar o modo de conversão de caracteres de nova linha.

  • t
    Abrir em texto (traduzido) modo.Nesse modo, combinações do carro (CR-LF) de alimentação de linha de retorno são traduzidas em feeds de uma linha (LF) na entrada e caracteres de LF são convertidas em combinações de CR-LF na saída.Além disso, Ctrl + Z é interpretado como um caractere de final de arquivo na entrada.Em arquivos abertos para leitura/gravação, fopen verifica um Ctrl + Z no final do arquivo e remove, se possível.Isso é feito porque usando o fseek e ftell funções para mover dentro de um arquivo que termina com um Ctrl + Z podem causar fseek se comporte incorretamente perto do final do arquivo.

  • b
    Abrir no modo binário (não traduzido).As traduções de t modo são suprimidas.

  • c
    Habilitar o sinalizador de confirmação associados filename para que o conteúdo do buffer de arquivo é gravado diretamente no disco se fflush ou _flushall é chamado.

  • n
    Redefinir o sinalizador de confirmação associados filename para "não-confirmação". Este é o padrão.Ela também substitui o sinalizador de confirmação global se vincular seu programa com Commode.obj.O padrão de sinalizador de confirmação global é "não-confirmação" a menos que você explicitamente vincular seu programa com Commode.obj.

The t, c, and nmode options are Microsoft extensions for fopen and _fdopen.Não as use se você quiser preservar a portabilidade do ANSI.

Se t ou b não é fornecido na mode, o modo de conversão padrão é definido pela variável global _fmode.Se t ou b é o prefixo para o argumento, a função falha e retorna NULL.Para uma discussão do texto e modos binários, consulte texto e binário e/S de arquivo de modo.

Caracteres válidos para o mode seqüência de caracteres usada na fopen e _fdopen correspondem a oflag argumentos usados na Open e _sopen, da seguinte forma.

Caracteres em mode seqüência de caracteres

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

Nenhum

n

Nenhum

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.

Exemplo

// 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 );
}

Entrada: crt_fdopen.txt

Line one
Line two

dye30d82.collapse_all(pt-br,VS.110).gifSaída

Lines in file: 2

Equivalência do .NET Framework

System::IO::FileStream::FileStream

Consulte também

Referência

Fluxo de i/O

_dup, _dup2

fclose, _fcloseall

fopen, _wfopen

freopen, _wfreopen

Open, _wopen