_creat
, _wcreat
Cria um arquivo novo. _creat
e _wcreat
foram descontinuados; use _sopen_s
, _wsopen_s
em vez disso.
Sintaxe
int _creat(
const char *filename,
int pmode
);
int _wcreat(
const wchar_t *filename,
int pmode
);
Parâmetros
filename
Nome do novo arquivo.
pmode
Configuração de permissão.
Valor retornado
Essas funções, se tiverem êxito, retornarão um descritor de arquivo para o arquivo criado. Caso contrário, as funções retornarão -1 e serão definidas errno
conforme mostrado na tabela a seguir.
errno valor |
Descrição |
---|---|
EACCES |
filename especifica um arquivo somente leitura existente ou especifica um diretório em vez de um arquivo. |
EMFILE |
Nenhum outro descritor de arquivo disponível. |
ENOENT |
Não foi possível encontrar o arquivo especificado. |
Se filename
for NULL
, essas funções invocam o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções definirão errno
como EINVAL
e retornarão -1.
Para obter mais informações sobre esses e outros códigos de retorno, confira errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Comentários
A função _creat
cria um novo arquivo ou abre e trunca um existente. A função _wcreat
é uma versão de caractere largo da função _creat
; o argumento filename
para _wcreat
é uma cadeia de caracteres larga. Caso contrário, _wcreat
e _creat
se comportam de forma idêntica.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar isso, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina Tchar.h | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcreat |
_creat |
_creat |
_wcreat |
Se o arquivo especificado por filename
não existir, um novo arquivo será criado com a configuração de permissão fornecida e será aberto para gravação. Se o arquivo já existir e a configuração de permissão permitir gravação, _creat
truncará o arquivo para o tamanho 0, destruindo o conteúdo anterior e o abrirá para gravação. A configuração de permissão, pmode
, aplica-se somente a arquivos recém-criados. O novo arquivo recebe a configuração de permissão especificada depois que ele é fechado pela primeira vez. A expressão de inteiro pmode
contém uma ou ambas as constantes de manifesto _S_IWRITE
e _S_IREAD
, definidas em SYS\Stat.h. Quando as duas constantes são informadas, elas são associadas com o operador OR bit a bit (|
). O parâmetro pmode
é definido com um dos valores a seguir.
Valor | Definição |
---|---|
_S_IWRITE |
Gravação permitida. |
_S_IREAD |
Leitura permitida. |
_S_IREAD | _S_IWRITE |
Leitura e gravação permitidas. |
Se a permissão de gravação não for concedida, o arquivo será somente leitura. Todos os arquivos são sempre legíveis; é impossível conceder permissão somente gravação. Os modos _S_IWRITE
e _S_IREAD | _S_IWRITE
são então equivalentes. Os arquivos abertos usando _creat
são sempre abertos em modo de compatibilidade (consulte _sopen
) com _SH_DENYNO
.
_creat
aplica a máscara de permissão de arquivo atual antes de pmode
definir as permissões (consulte _umask
). _creat
é fornecido principalmente para compatibilidade com bibliotecas anteriores. Uma chamada a _open
com _O_CREAT
e _O_TRUNC
no parâmetro oflag
é equivalente a _creat
e é preferível para o novo código.
Requisitos
Rotina | Cabeçalho necessário | Cabeçalho opcional |
---|---|---|
_creat |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wcreat |
<io.h> ou <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_creat.c
// compile with: /W3
// This program uses _creat to create
// the file (or truncate the existing file)
// named data and open it for writing.
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int fh;
fh = _creat( "data", _S_IREAD | _S_IWRITE ); // C4996
// Note: _creat is deprecated; use _sopen_s instead
if( fh == -1 )
perror( "Couldn't create data file" );
else
{
printf( "Created data file.\n" );
_close( fh );
}
}
Created data file.
Confira também
E/S de baixo nível
_chmod
, _wchmod
_chsize
_close
_dup
, _dup2
_open
, _wopen
_sopen
, _wsopen
_umask