Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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