_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 NULLle 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_doserrnoet _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 routine de texte générique

Routine Tchar.h _UNICODE et _MBCS non défini _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.

Value 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