_fsopen, _wfsopen
Abre um fluxo com 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 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.Se filename ou mode é NULL ou uma seqüência vazia, essas funções chamar o manipulador deparâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução terá permissão para continuar, essas funções retornam NULL e defina 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
O _fsopen função abre o arquivo especificado por filename como um fluxo e prepara o arquivo para leitura compartilhada subseqüente ou escrita, conforme definido pelo modo e shflag argumentos. _wfsopené uma versão de caractere largo de _fsopen; o filename e mode argumentos para _wfsopen são seqüências de caracteres largos._wfsopene _fsopen tenham comportamento idêntico caso contrário.
A seqüência de caracteres mode Especifica o tipo de acesso solicitado para o arquivo, conforme mostrado na tabela a seguir.
Termo |
Definição |
---|---|
"r" |
É aberto para leitura.Se o arquivo não existe ou não for encontrado, o _fsopen falha de chamada. |
"w" |
Abre um arquivo vazio para gravação.Se o arquivo fornecido existir, seu conteúdo será destruído. |
"a" |
É aberto para gravação no final do arquivo (acrescentar); cria o arquivo pela primeira vez, se não existir. |
"r+" |
Será aberto para leitura e gravação.(O arquivo deve existir). |
"w+" |
Abre um arquivo vazio para leitura e gravação.Se o arquivo fornecido existir, seu conteúdo será destruído. |
"a+" |
É aberto para leitura e acrescentando; cria o arquivo pela primeira vez, se não existir. |
Use o "w" e "w+" tipos com cuidado, pois eles podem destruir os arquivos existentes.
Quando um arquivo é aberto com o "a" ou "a+" acessar o tipo, todas as gravação operações ocorrem ao final do arquivo.O ponteiro do arquivo pode ser reposicionado usando fseek ou rewind, mas é sempre retornado para o final do arquivo antes de qualquer gravação a operação é realizada.Assim, os dados existentes não podem ser substituídos.Quando o "r+", "w+", ou "a+" tipo de acesso é especificado, a 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 interveniente fsetpos, fseek, ou Retroceder operação.A posição atual pode ser especificada para o fsetpos ou fseek operação, se desejado.Com os valores acima, um dos seguintes caracteres pode ser incluído em mode para especificar o modo de tradução para novas linhas e para o gerenciamento de arquivos.
Termo |
Definição |
---|---|
t |
Abre um arquivo em modo de texto (traduzido).Nesse modo, combinações de alimentação (CR-LF) do carro return–linha são convertidas 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 como um caractere de final de arquivo na entrada.Em arquivos abertos para leitura ou leitura/gravação, _fsopen verifica um CTRL + Z no final do arquivo e remove-lo, se possível.Isso é feito porque usando fseek e ftell para mover-se dentro de um arquivo que termina com um CTRL + Z pode causar fseek se comporte incorretamente próximo ao final do arquivo. |
b |
Abre um arquivo no modo binário de (não traduzido); as traduções acima são suprimidas. |
S |
Especifica que o cache é otimizado para, mas não restrito para acesso seqüencial do disco. |
R |
Especifica que o cache é otimizado para, mas não restrito para acesso aleatório do disco. |
T |
Especifica um arquivo como temporário.Se possível, ele não seja liberado para o disco. |
D |
Especifica um arquivo como temporário.Ela é excluída quando o último ponteiro de arquivo é fechado. |
Se t ou b não for fornecido em mode, o modo de tradução é definido pela variávelde modo padrão**_fmode**. Se t ou b tem o prefixo para o argumento, a falha da função e retorna NULL.Para uma discussão sobre os modos de texto e binário , consulte texto e binário e/S de arquivos de modo.
O argumento shflag é uma expressão de constante que consiste em uma das constantes a seguir manifesto , definidas em Share.h.
Termo |
Definição |
---|---|
_SH_COMPAT |
Define o modo de compatibilidade para aplicativos de 16 bits. |
_SH_DENYNO |
Permissões de leitura e gravação acesso. |
_SH_DENYRD |
Nega o acesso de leitura para o arquivo. |
_SH_DENYRW |
Nega o acesso de leitura e gravação ao arquivo. |
_SH_DENYWR |
Nega o acesso de gravação ao arquivo. |
Mapeamentos de rotina de texto genérico
Rotina de TCHAR.h |
_ Unicode e _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_tfsopen |
_fsopen |
_fsopen |
_wfsopen |
Requisitos
Função |
Necessário cabeçalho |
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" );
}
Equivalência do .NET Framework
System::IO::FileStream::FileStream