Partager via


_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 );
   }
}
  

Voir aussi

Référence

E/S niveau bas

_chmod, _wchmod

_chsize

_close

_dup, _dup2

_open, _wopen

_sopen, _wsopen

_umask