_creat, _wcreat

Crea un nuovo file. _create _wcreat sono stati deprecati. Usare _sopen_sinvece . _wsopen_s

Sintassi

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

Parametri

filename
Nome del nuovo file.

pmode
Impostazione di autorizzazione.

Valore restituito

Queste funzioni, se hanno esito positivo, restituiscono un descrittore di file al file creato. In caso contrario, le funzioni restituiscono -1 e impostate errno come illustrato nella tabella seguente.

Valore errno Descrizione
EACCES filename specifica un file di sola lettura esistente oppure una directory anziché un file.
EMFILE Non sono disponibili altri descrittori di file.
ENOENT Impossibile trovare il file specificato.

Se filename è NULL, queste funzioni richiamano il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni impostano errno su EINVAL e restituiscono -1.

Per altre informazioni su questi e altri codici restituiti, vedere errno, _doserrno, _sys_errliste _sys_nerr.

Osservazioni:

La funzione _creat crea un nuovo file oppure apre e tronca uno esistente. _wcreat è una versione a caratteri wide di _creat; l'argomento filename in _wcreat è una stringa di caratteri wide. In caso contrario,_wcreat e _creat si comportano in modo identico.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificarlo, vedere Stato globale in CRT.

Mapping di routine di testo generico

Routine Tchar.h _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_tcreat _creat _creat _wcreat

Se il file specificato da filename non esiste, viene creato un nuovo file con l'impostazione di autorizzazione specificata e aperto per la scrittura. Se il file già esiste e l'impostazione di autorizzazione consente la scrittura, _creat tronca il file di lunghezza 0, eliminando il contenuto precedente e lo apre per la scrittura. L'impostazione di autorizzazione, pmode, si applica solo ai file appena creati. Il nuovo file riceve l'impostazione di autorizzazione specificata dopo la chiusura per la prima volta. L'espressione integer pmode contiene una o entrambe le costanti manifesto _S_IWRITE e _S_IREAD, definite in SYS\Stat.h. Quando vengono date entrambe le costanti, vengono unite con l'operatore bit per bit o ( | ). Il parametro pmode è impostato su uno dei valori seguenti.

Valore Definizione
_S_IWRITE Scrittura consentita.
_S_IREAD Lettura consentita.
_S_IREAD | _S_IWRITE Lettura e scrittura consentite.

Se non viene concessa l'autorizzazione di scrittura, il file è di sola lettura. Tutti i file sono sempre leggibili; non è possibile concedere autorizzazioni di sola scrittura. Le modalità _S_IWRITE e _S_IREAD | _S_IWRITE sono quindi equivalenti. I file aperti con _creat vengono sempre aperti in modalità compatibilità (vedere _sopen) con _SH_DENYNO.

_creat applica la maschera di autorizzazione file corrente a pmode prima di impostare le autorizzazioni (vedere _umask). _creat viene specificato principalmente per la compatibilità con le librerie precedenti. Una chiamata a _open con _O_CREAT e _O_TRUNC nel parametro oflag equivale a _creat ed è preferibile per nuovo codice.

Requisiti

Ciclo Intestazione obbligatoria Intestazione facoltativa
_creat <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wcreat <io.h> o <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

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

Vedi anche

I/O di basso livello
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask