_creat
, _wcreat
Crée un nouveau fichier. _creat
et _wcreat
ont été déconseillés ; utilisez _sopen_s
à _wsopen_s
la place.
Syntaxe
int _creat(
const char *filename,
int pmode
);
int _wcreat(
const wchar_t *filename,
int pmode
);
Paramètres
filename
Nom du nouveau fichier.
pmode
Paramètre d'autorisation.
Valeur retournée
Ces fonctions, en cas de réussite, retournent un descripteur de fichier pour le fichier créé. Sinon, les fonctions retournent -1 et définissent errno
comme indiqué dans le tableau suivant.
Valeur errno |
Description |
---|---|
EACCES |
filename spécifie un fichier en lecture seule existant ou un répertoire au lieu d’un fichier. |
EMFILE |
Aucun autre descripteur de fichier n'est disponible. |
ENOENT |
Impossible de trouver le fichier spécifié. |
Si filename
c’est NULL
le cas, ces fonctions appellent le gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions définissent errno
avec la valeur EINVAL
et retournent -1.
Pour plus d’informations sur ces codes de retour et d’autres codes de retour, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
Notes
La fonction _creat
crée un fichier ou ouvre et tronque un fichier existant. _wcreat
est une version à caractères larges de _creat
; l'argument filename
de _wcreat
est une chaîne à caractères larges. Sinon,_wcreat
et _creat
se comportent de la même façon.
Par défaut, l’état global de cette fonction est limité à l’application. Pour le modifier, consultez l’état global dans le CRT.
Mappages de routines de texte générique
Routine Tchar.h | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcreat |
_creat |
_creat |
_wcreat |
Si le fichier spécifié filename
par n’existe pas, un nouveau fichier est créé avec le paramètre d’autorisation donné et est ouvert pour l’écriture. Si le fichier existe déjà et que son paramètre d’autorisation autorise l’écriture, _creat
tronque le fichier à la longueur 0, détruisant le contenu précédent, et l’ouvre pour écriture. Le paramètre d’autorisation, pmode
, s’applique uniquement aux fichiers qui viennent d’être créés. Le nouveau fichier reçoit le paramètre d’autorisation spécifié après sa fermeture pour la première fois. L’expression entière pmode
contient l’une des constantes de manifeste _S_IWRITE
et _S_IREAD
(ou les deux), définies dans SYS\Stat.h. Lorsque les deux constantes sont données, elles sont jointes au niveau du bit ou de l’opérateur ( |
). Le paramètre pmode
a l’une des valeurs suivantes.
Valeur | Définition |
---|---|
_S_IWRITE |
Écriture autorisée. |
_S_IREAD |
Lecture autorisée. |
_S_IREAD | _S_IWRITE |
Lecture et écriture autorisées. |
Si l’autorisation d’écriture n’est pas donnée, le fichier est en lecture seule. Tous les fichiers sont toujours lisibles ; il est impossible d’accorder une autorisation en écriture seule. Ainsi, les modes _S_IWRITE
et _S_IREAD | _S_IWRITE
sont équivalents. Les fichiers ouverts à l’aide _creat
sont toujours ouverts en mode de compatibilité (voir _sopen
) avec _SH_DENYNO
.
_creat
applique le masque d’autorisation de fichier actuel à pmode
avant de définir les autorisations (voir _umask
). _creat
est fourni principalement pour assurer la compatibilité avec les bibliothèques précédentes. Un appel à _open
avec _O_CREAT
et _O_TRUNC
dans le paramètre oflag
équivaut à _creat
et est préférable pour le nouveau code.
Spécifications
Routine | En-tête requis | En-tête facultatif |
---|---|---|
_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> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// 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.
Voir aussi
E/S de bas niveau
_chmod
, _wchmod
_chsize
_close
_dup
, _dup2
_open
, _wopen
_sopen
, _wsopen
_umask