Partilhar via


_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