Compartilhar via


_fsopen, _wfsopen

Abre um fluxo com o compartilhamento de arquivos.

FILE *_fsopen( 
   const char *filename,
   const char *mode,
   int shflag 
);
FILE *_wfsopen( 
   const wchar_t *filename,
   const wchar_t *mode,
   int shflag 
);

Parâmetros

  • filename
    Nome do arquivo para em em aberto.

  • mode
    Tipo de acesso permitido.

  • shflag
    Tipo de compartilhamento permitido.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o fluxo.Um valor de ponteiro nulo indica um erro.If filename ou mode é NULL ou uma seqüência vazia, essas funções chamar o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções retornam NULL e conjunto errno para EINVAL.

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

Comentários

The _fsopen função abre o arquivo especificado por filename sistema autônomo um fluxo e prepara o arquivo para subseqüente compartilhada leitura ou gravação, conforme definido pelo modo e shflag argumentos. _wfsopen é uma versão de caractere largo da _fsopen; o filename e mode argumentos para _wfsopen são seqüências de caracteres largos. _wfsopen e _fsopen tenham comportamento idêntico caso contrário.

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

Termo

Definição

"r"

Será aberto para leitura.Se o arquivo não existe ou não for encontrado, o _fsopen 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.

Use o "w" e "w+" tipos com cuidado, pois elas podem destruir sistema autônomo arquivos existentes.

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 ele é 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, ao alternar entre a leitura e gravação, deve haver um intermediárias fsetpos, fseek, or retroceder operação.A posição corrente pode ser especificada para o fsetpos ou fseek operação, se desejado. Juntamente com os valores acima, um dos seguintes caracteres pode ser incluído no mode Para especificar o modo de tradução para novas linhas.

Termo

Definição

t

Abre um arquivo no modo de texto (traduzido).Nesse modo, return–line de carro (CR-LF) combinações de feed são transformadas em feeds de única 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 ou leitura/gravação, _fsopen verifica um CTRL+Z no participante do arquivo e remove-lo, se possível. Isso é concluído porque usando fseek e ftell Para mover dentro de um arquivo que termine com um CTRL+Z pode causar fseek se comporte incorretamente no participante do arquivo.

b

Abre um arquivo no modo binário (não traduzido); as traduções acima são suprimidas.

If t ou b não é fornecido na mode, o modo de tradução é definido pela variável modo padrão _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.

O argumento shflag é uma expressão constante que pode ser um das seguintes constantes manifesto, definidas no Share.h.

Termo

Definição

_SH_COMPAT

Define o modo de compatibilidade para aplicativos de 16 bit.

_SH_DENYNO

Permissões de leitura e gravar acesso.

_SH_DENYRD

Nega o acesso de leitura ao arquivo.

_SH_DENYRW

Nega o acesso de leitura e gravar para o arquivo.

_SH_DENYWR

Nega o acesso de gravar para o arquivo.

Mapeamentos de rotina de texto genérica

Rotina tchar.h

_UNICODE e _MBCS não definido

_MBCS definido

_UNICODE definido

_tfsopen

_fsopen

_fsopen

_wfsopen

Requisitos

Função

Cabeçalho necessário

Cabeçalhos opcionais

_fsopen

<stdio.h>

<share.h>

Constante de manifesto para shflag parâmetro.

_wfsopen

<stdio.h> ou <wchar.h>

<share.h>

Constante de manifesto para shflag parâmetro.

Exemplo

// crt_fsopen.c

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

int main( void )
{
   FILE *stream;

   // Open output file for writing. Using _fsopen allows us to
   // ensure that no one else writes to the file while we are
   // writing to it.
    //
   if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
   {
      fprintf( stream, "No one else in the network can write "
                       "to this file until we are done.\n" );
      fclose( stream );
   }
   // Now others can write to the file while we read it.
   system( "type outfile" );
}

No one else in the network can write to this file until we are done.

Equivalente do NET Framework

Consulte também

Referência

Fluxo de E/S

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_Open, _wopen

_setmode

_sopen, _wsopen