Freigeben über


_creat, _wcreat

Erstellt eine neue Datei. _creatund _wcreat wurden veraltet; verwenden Sie _sopen_sstattdessen . _wsopen_s

Syntax

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, sofern erfolgreich, geben einen Dateideskriptor an die erstellte Datei zurück. Andernfalls geben die Funktionen -1 zurück und legen sie wie in der folgenden Tabelle dargestellt fest errno .

Wert vom Typ errno Beschreibung
EACCES filename gibt eine vorhandene schreibgeschützte Datei oder ein Verzeichnis anstelle einer Datei an.
EMFILE Es sind keine Dateideskriptoren mehr verfügbar.
ENOENT Die angegebene Datei konnte nicht gefunden werden.

Wenn filename ja NULL, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung 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, _sys_errlistund _sys_nerr.errno

Hinweise

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

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern finden Sie im Global state in the CRT.

Mapping generischer Textroutinen

Tchar.h-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_tcreat _creat _creat _wcreat

Wenn die angegebene filename Datei nicht vorhanden ist, wird eine neue Datei mit der angegebenen Berechtigungseinstellung erstellt und zum Schreiben geöffnet. Wenn die Datei bereits vorhanden ist und die Berechtigungseinstellung das Schreiben ermöglicht, verkleinert _creat die Datei auf die Länge 0. Der bisherige Inhalt wird entfernt und die Datei zum Schreiben geöffnet. Die Berechtigungseinstellung pmode gilt nur für neu erstellte Dateien. Die neue Datei empfängt die angegebene Berechtigungseinstellung, nachdem sie zum ersten Mal geschlossen wurde. Der ganzzahlige Ausdruck pmode enthält eine oder beide der folgenden Manifestkonstanten, die in SYS\Stat.h definiert sind: _S_IWRITE und _S_IREAD. Wenn beide Konstanten angegeben werden, werden sie mit dem bitweisen oder operator ( | ) verknüpft. Der Parameter pmode wird auf einen der folgenden Werte eingestellt:

Wert Definition
_S_IWRITE Schreiben erlaubt.
_S_IREAD Lesen erlaubt.
_S_IREAD | _S_IWRITE Lesen und Schreiben erlaubt.

Wenn keine Schreibberechtigung erteilt wird, ist die Datei schreibgeschützt. Alle Dateien sind immer lesbar; Es ist unmöglich, schreibgeschützte Berechtigungen zu erteilen. Deshalb sind die Modi _S_IWRITE und _S_IREAD | _S_IWRITE gleichwertig. Dateien, die mit der Verwendung _creat geöffnet werden, werden immer im Kompatibilitätsmodus geöffnet (siehe _sopen) mit _SH_DENYNO.

_creat wendet das aktuelle Dateiberechtigungsformat vor dem Festlegen der Berechtigungen an pmode (siehe _umask). _creat wird in erster Linie 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 empfiehlt sich für neuen Code .

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.

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 );
   }
}
Created data file.

Siehe auch

E/A auf niedriger Ebene
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask