Sdílet prostřednictvím


_creat, _wcreat

Vytvoří nový soubor. _creata _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 Hodnotu 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_doserrnoerrno

Poznámky

Funkce _creat vytvoří nový soubor nebo se otevře a zkrátí existující soubor. _wcreatje verze širokého znaku _creatfilename ; 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 Definovány _UNICODE Definovány
_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 pmodevztahuje 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_IREADdefinované 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