_creat, _wcreat
Crée un fichier. _creat et _wcreat ont été déconseillés ; utilisez _sopen_s, _wsopen_s à la place.
int _creat(
const char *filename,
int pmode
);
int _wcreat(
const wchar_t *filename,
int pmode
);
Paramètres
filename
Nom du nouveau fichier.pmode
Définition des autorisations
Valeur de retour
Ces fonctions, si exécutées avec succès, retournent un descripteur de fichier du fichier créé. Sinon, les fonctions retournent – 1 et définissent errno comme indiqué dans le tableau suivant.
Paramètre errno |
Description |
---|---|
EACCES |
filename spécifie un fichier en lecture seule existant ou spécifie un répertoire au lieu d'un fichier. |
EMFILE |
Plus aucun fichier de descripteurs de fichiers ne sont disponibles. |
ENOENT |
Le fichier spécifié est introuvable. |
Si filename est NULL, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. 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 autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.
Notes
La fonction _creat crée un nouveau fichier ou ouvre et en tronque un existant. _wcreat est une version à caractères larges de _creat; l'argument filename vers _wcreat est une chaîne à caractères larges. _wcreat et _creat se comportent sinon de manière identique.
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é par filename n'existe pas, un nouveau fichier est créé avec le paramètre d'autorisation spécifique 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, puis l'ouvre en écriture. Le paramètre d'autorisation, pmode, s'applique aux fichiers récemment créé uniquement. Le fichier obtient le paramètre d'autorisations spécifié après qu'il a été fermé pour la première fois. L'expression entière pmode contient une des deux ou les deux constantes manifestes suivantes _S_IWRITE and _S_IREAD, définies dans SYS\Stat.h : Lorsque les deux constantes sont fournies, elles sont jointes à l'opérateur de bits OR ( |). Le paramètre pmode est fixé à 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 peuvent toujours être lus ; il est impossible de donner une autorisation pour l'écriture seule. Les modes _S_IWRITE et _S_IREAD| _S_IWRITE sont donc équivalents. Les fichiers ouverts en utilisant _creat sont toujouts ouverts dans le 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 principalement fournis à des fins de 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 un nouveau code.
Configuration requise
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 Compatibilité dans l'introduction.
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 );
}
}