Freigeben über


_creat, _wcreat

Erstellt eine neue Datei. _creat und _wcreat sind veraltet; Verwenden Sie stattdessen _sopen_s, _wsopen_s.

int _creat( 
   const char *filename,
   int pmode 
);
int _wcreat( 
   const wchar_t *filename,
   int pmode 
);

Parameter

  • filename
    Name der neuen Datei.

  • pmode
    Berechtigungseinstellung.

Rückgabewert

Diese Funktionen, wenn erfolgreich, geben einen Dateideskriptor zur erstellten Datei zurück. Andernfalls geben die Funktionen - 1 und festgelegtem errno wie in der folgenden Tabelle dargestellt zurück.

Einstellung für errno

Beschreibung

EACCES

filename gibt eine vorhandene schreibgeschützte Datei an oder wird ein Verzeichnis und eine Datei an.

EMFILE

Nicht mehr Dateideskriptoren sind verfügbar.

ENOENT

Angegebene Datei wurde nicht gefunden.

Wenn filename NULL ist, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben – 1 zurück.

Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die _creat-Funktion erstellt eine neue Datei oder öffnet und entfernt vorhandenes ab. _wcreat ist eine Breitzeichenversion von _creat. Das filename-Argument für _wcreat ist eine Breitzeichenfolge. _wcreat und _creat verhalten sich andernfalls identisch.

Zuordnung generischer Textroutinen

Tchar.h-Routine

_UNICODE und _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tcreat

_creat

_creat

_wcreat

Wenn die Datei, die von filename angegeben wird, nicht vorhanden ist, wird eine neue Datei mit der angegebenen Berechtigungseinstellung erstellt und ist zum Schreiben geöffnet. Wenn die Datei bereits vorhanden ist und die Berechtigungseinstellung Schreiben zulässt, schneidet _creat die Datei zu Länge 0 ab und zerstört vorherigen Inhalt, und öffnet sie zum Schreiben. Die Berechtigungseinstellung, pmode, gilt nur neu erstellte Dateien zu. Die neue Datei erhält die angegebene Berechtigungseinstellung, nachdem sie zum ersten Mal geschlossen ist. Der ganzzahlige Ausdruck pmode enthält eine oder beide der Manifestkonstanten _S_IWRITE und _S_IREAD, die in SYS\Stat.h. Wenn beide Konstanten angegeben werden, sind sie mit dem bitweisen Operator OR verknüpft ( |). Der Parameter pmode wird auf einen der folgenden Werte festgelegt.

Wert

Definition

_S_IWRITE

Schreiben zulässig.

_S_IREAD

Lesen zulässig.

_S_IREAD | _S_IWRITE

Lesen und Schreiben zulässig.

Wenn Schreibberechtigung nicht angegeben wird, ist die Datei schreibgeschützt. Alle Dateien sind immer lesbar; Es ist nicht möglich, lesegeschützte Berechtigung zu geben. Die Modi _S_IWRITE_S_IREAD und | _S_IWRITE sind dann entsprechend. Die Dateien, die mit _creat geöffnet sind, werden immer im Kompatibilitätsmodus (siehe _sopen), mit _SH_DENYNO geöffnet.

_creat Übernimmt die aktuelle Dateiberechtigungsmaske zu pmode, bevor die Berechtigungen festzulegen (siehe _umask). _creat wird hauptsächlich für die Kompatibilität mit früheren Bibliotheken bereitgestellt. Ein Aufruf von _open mit _O_CREAT und _O_TRUNC im oflag-Parameter entspricht _creat und ist für neuen Code vorzuziehen.

Anforderungen

Routine

Erforderlicher Header

Optionaler Header

_creat

<io.h>

<sys/types.h, sys></stat.h, errno.h><>

_wcreat

<io.h oder> wchar.h <>

<sys/types.h, sys></stat.h, errno.h><>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

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

Siehe auch

Referenz

E/A auf niedriger Ebene

_chmod, _wchmod

_chsize

_close

_dup, _dup2

_open, _wopen

_sopen, _wsopen

_umask