Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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