_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.