Compartir a través de


_creat, _wcreat

Crea un nuevo archivo. _creat y _wcreat han quedado en desuso; use _sopen_s, _wsopen_s en su lugar.

Sintaxis

int _creat(
   const char *filename,
   int pmode
);
int _wcreat(
   const wchar_t *filename,
   int pmode
);

Parámetros

filename
Nombre del nuevo archivo.

pmode
Configuración de permisos.

Valor devuelto

Estas funciones, si se ejecutan correctamente, devuelven un descriptor de archivo para el archivo creado. De lo contrario, las funciones devuelven -1 y se establecen errno como se muestra en la tabla siguiente.

Valor de errno Descripción
EACCES filename especifica un archivo existente de solo lectura o un directorio en lugar de un archivo.
EMFILE No hay más descriptores de archivo disponibles.
ENOENT No se pudo encontrar el archivo especificado.

Si filename es NULL, estas funciones invocan al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven -1.

Para obtener más información sobre estos y otros códigos de retorno, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

La función _creat crea otro archivo o abre y trunca uno existente. _wcreat es una versión con caracteres anchos de _creat; el argumento filename para _wcreat es una cadena de caracteres anchos. Por lo demás,_wcreat y _creat se comportan de forma idéntica.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiarlo, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcreat _creat _creat _wcreat

Si el archivo especificado por filename no existe, se crea un nuevo archivo con la configuración de permiso especificada y se abre para escribir. Si el archivo ya existe y su configuración de permisos permite escritura, _creat trunca el archivo en la longitud 0, lo que destruye el contenido anterior y lo abre para escritura. La configuración de permisos, pmode, solo se aplica a archivos recién creados. El nuevo archivo recibe la configuración de permisos especificada cuando se cierra por primera vez. La expresión de entero pmode contiene una o ambas constantes del manifiesto, _S_IWRITE y _S_IREAD, que se definen en SYS\Stat.h. Cuando se proporcionan ambas constantes, se combinan con el operador o bit a bit (|). El parámetro pmode se establece en uno de los valores siguientes.

Valor Definición
_S_IWRITE Escritura permitida.
_S_IREAD Lectura permitida.
_S_IREAD | _S_IWRITE Lectura y escritura permitidas.

Si no se ha concedido el permiso de escritura, el archivo será de solo lectura. Todos los archivos son siempre legibles; es decir, no es posible conceder permisos de solo escritura. Por consiguiente, los modos _S_IWRITE y _S_IREAD | _S_IWRITE son equivalentes. Los archivos abiertos mediante _creat siempre se abren en modo de compatibilidad (vea _sopen) con _SH_DENYNO.

_creat aplica la máscara de permisos de archivo actual a pmode antes de establecer los permisos (consulte _umask). _creat sirve principalmente para la compatibilidad con bibliotecas anteriores. Una llamada a _open con _O_CREAT y _O_TRUNC en el parámetro oflag es equivalente a _creat y es preferible en caso de nuevo código.

Requisitos

Routine Encabezado necesario Encabezado opcional
_creat <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wcreat <io.h> o <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

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

Vea también

E/S de bajo nivel
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask