_creat
, _wcreat
Erstellt eine neue Datei. _creat
und _wcreat
wurden veraltet; verwenden Sie _sopen_s
stattdessen . _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_errlist
und _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