Condividi tramite


_creat, _wcreat

Crea un nuovo file. _creat e _wcreat sono deprecati; utilizzare invece _sopen_s, _wsopen_s.

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 completano con successo, restituiscono un descrittore del file creato. In caso contrario, le funzioni ritornano –1 e impostano errno come illustrato nella tabella seguente.

Impostazione di errno

Descrizione

EACCES

filename specifica un file di sola lettura esistente o specifica una directory invece di un file.

EMFILE

Non sono disponibili ulteriori descrittori di file.

ENOENT

Impossibile trovare il file specificato.

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

Per ulteriori informazioni su questi e altri codici restituiti, vedere _doserrno, errno, _sys_errlist, e _sys_nerr.

Note

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

Mapping di routine di testo generico

Routine Tchar.h

_UNICODE e _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcreat

_creat

_creat

_wcreat

Se il file specificato da filename non esiste, verrà creato un nuovo file con l'impostazione di autorizzazione specificata e verrà aperto per la scrittura. Se il file esiste già e la sua impostazione di autorizzazione consente la scrittura, _creat tronca il file a 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 che è stato chiuso 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 fornite entrambe le costanti, queste sono combinate con l'operatore OR bit a bit |). Il parametro pmode è impostato su uno dei valori indicati di seguito.

Valore

Definizione

_S_IWRITE

Scrittura consentita.

_S_IREAD

Lettura consentita.

_S_IREAD | _S_IWRITE

Lettura e scrittura consentite.

Se non viene concessa l'autorizzazione in scrittura, il file è di sola lettura. Tutti i file sono sempre leggibili; è impossibile fornire l'autorizzazione di sola scrittura. Quindi le modalità _S_IWRITE e _S_IREAD| _S_IWRITE sono equivalenti. File aperti mediante _creat vengono aperti sempre in modalità di compatibilità (vedere _sopen) con _SH_DENYNO.

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

Requisiti

Routine

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 ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

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 );
   }
}
  

Vedere anche

Riferimenti

I/O a basso livello

_chmod, _wchmod

_chsize

_close

_dup, _dup2

_open, _wopen

_sopen, _wsopen

_umask