_creat
, _wcreat
Vytvoří nový soubor. _creat
a _wcreat
byly zastaralé; místo toho použijte_sopen_s
_wsopen_s
.
Syntaxe
int _creat(
const char *filename,
int pmode
);
int _wcreat(
const wchar_t *filename,
int pmode
);
Parametry
filename
Název nového souboru
pmode
Nastavení oprávnění.
Vrácená hodnota
Pokud jsou tyto funkce úspěšné, vrátí do vytvořeného souboru popisovač souboru. V opačném případě funkce vrátí hodnotu -1 a nastaví errno
se, jak je znázorněno v následující tabulce.
errno hodnota |
Popis |
---|---|
EACCES |
filename určuje existující soubor jen pro čtení nebo určuje adresář místo souboru. |
EMFILE |
Nejsou k dispozici žádné další popisovače souborů. |
ENOENT |
Zadaný soubor nebyl nalezen. |
Pokud filename
ano NULL
, tyto funkce vyvolávají neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tyto funkce jsou nastavené errno
na EINVAL
hodnotu -1 a vrátí hodnotu -1.
Další informace o těchto a dalších návratových kódech naleznete v tématu , , , a_sys_nerr
. _sys_errlist
_doserrno
errno
Poznámky
Funkce _creat
vytvoří nový soubor nebo se otevře a zkrátí existující soubor. _wcreat
je verze širokého znaku _creat
filename
; argument je _wcreat
řetězec širokého znaku. _wcreat
a _creat
chovat se stejně jinak.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Pokud ho chcete změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tcreat |
_creat |
_creat |
_wcreat |
Pokud soubor zadaný filename
pomocí neexistuje, vytvoří se nový soubor s daným nastavením oprávnění a otevře se pro zápis. Pokud soubor již existuje a jeho nastavení oprávnění umožňuje zápis, _creat
zkrátí soubor na délku 0, zničí předchozí obsah a otevře ho pro zápis. Nastavení oprávnění se pmode
vztahuje pouze na nově vytvořené soubory. Nový soubor obdrží zadané nastavení oprávnění po prvním zavření. Celočíselné výraz pmode
obsahuje jednu nebo obě konstanty _S_IWRITE
manifestu a _S_IREAD
definované v sys\Stat.h. Pokud jsou obě konstanty zadané, spojí se s bitovým operátorem nebo operátorem ( |
). Parametr pmode
je nastaven na jednu z následujících hodnot.
Hodnota | Definice |
---|---|
_S_IWRITE |
Zápis je povolený. |
_S_IREAD |
Čtení povoleno. |
_S_IREAD | _S_IWRITE |
Čtení a psaní je povoleno. |
Pokud oprávnění k zápisu není uděleno, soubor je jen pro čtení. Všechny soubory jsou vždy čitelné; Není možné udělit oprávnění jen pro zápis. Režimy _S_IWRITE
a _S_IREAD | _S_IWRITE
pak jsou ekvivalentní. Soubory otevřené pomocí _creat
jsou vždy otevřeny v režimu kompatibility (viz _sopen
) s _SH_DENYNO
.
_creat
použije aktuální masku oprávnění k souboru před pmode
nastavením oprávnění (viz _umask
). _creat
je poskytován především kvůli kompatibilitě s předchozími knihovnami. Volání _open
s _O_CREAT
a _O_TRUNC
v parametru oflag
je ekvivalentní _creat
a je vhodnější pro nový kód.
Požadavky
Rutina | Požadovaný hlavičkový soubor | Volitelné záhlaví |
---|---|---|
_creat |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wcreat |
<io.h> nebo <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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.
Viz také
Vstupně-výstupní operace nízké úrovně
_chmod
, _wchmod
_chsize
_close
_dup
, _dup2
_open
, _wopen
_sopen
, _wsopen
_umask