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