Udostępnij za pośrednictwem


_creat, _wcreat

Tworzy nowy plik. _creat i _wcreat zostały przestarzałe; zamiast tego użyj polecenia _sopen_s, _wsopen_s .

Składnia

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

Parametry

filename
Nazwa nowego pliku.

pmode
Ustawienie uprawnień.

Wartość zwracana

Te funkcje, jeśli się powiedzie, zwracają deskryptor pliku do utworzonego pliku. W przeciwnym razie funkcje zwracają wartość -1 i ustawiają errno , jak pokazano w poniższej tabeli.

errno wartość opis
EACCES filename określa istniejący plik tylko do odczytu lub określa katalog zamiast pliku.
EMFILE Nie są dostępne deskryptory plików.
ENOENT Nie można odnaleźć określonego pliku.

Jeśli filename to NULL, te funkcje wywołują nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie może kontynuować, te funkcje są ustawione errno na EINVAL wartość i zwracają wartość -1.

Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Uwagi

Funkcja _creat tworzy nowy plik lub otwiera go i obcina istniejącą. _wcreat jest wersją szerokoznakową ; _creatargument to filename _wcreat ciąg o szerokim znaku. _wcreat i _creat zachowywać się identycznie inaczej.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby go zmienić, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

Procedura tchar.h _UNICODE i _MBCS niezdefiniowane _MBCS zdefiniowany _UNICODE zdefiniowany
_tcreat _creat _creat _wcreat

Jeśli plik określony przez filename program nie istnieje, zostanie utworzony nowy plik z danym ustawieniem uprawnień i zostanie otwarty do zapisu. Jeśli plik już istnieje, a jego ustawienie uprawnień zezwala na zapisywanie, _creat obcina plik do długości 0, niszcząc poprzednią zawartość, i otwiera go do zapisu. Ustawienie uprawnień , pmodedotyczy tylko nowo utworzonych plików. Nowy plik otrzymuje określone ustawienie uprawnień po jego zamknięciu po raz pierwszy. Wyrażenie pmode całkowite zawiera jedną lub obie stałe _S_IWRITE manifestu i _S_IREAD, zdefiniowane w pliku SYS\Stat.h. Gdy obie stałe są podane, są one łączone z bitowym lub operatorem ( | ). Parametr pmode jest ustawiony na jedną z następujących wartości.

Wartość Definicja
_S_IWRITE Dozwolone pisanie.
_S_IREAD Dozwolone jest odczytywanie.
_S_IREAD | _S_IWRITE Dozwolone jest odczytywanie i zapisywanie.

Jeśli nie podano uprawnień do zapisu, plik jest tylko do odczytu. Wszystkie pliki są zawsze czytelne; nie można nadać uprawnień tylko do zapisu. Tryby _S_IWRITE , a _S_IREAD | _S_IWRITE następnie są równoważne. Pliki otwierane przy użyciu _creat są zawsze otwierane w trybie zgodności (zobacz _sopen) z _SH_DENYNO.

_creat stosuje bieżącą maskę uprawnień do pliku przed pmode ustawieniem uprawnień (zobacz _umask). _creat zapewniana jest przede wszystkim zgodność z poprzednimi bibliotekami. Wywołanie metody _open z parametrem _O_CREAT i _O_TRUNC w parametrze oflag jest równoważne _creat i jest preferowane dla nowego kodu.

Wymagania

Procedura Wymagany nagłówek Opcjonalny nagłówek
_creat <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wcreat <io.h> lub <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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.

Zobacz też

We/Wy niskiego poziomu
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask