_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