_creat
, _wcreat
Yeni bir dosya oluşturur. _creat
ve _wcreat
kullanım dışı bırakıldı; bunun yerine kullanın_sopen_s
_wsopen_s
.
Sözdizimi
int _creat(
const char *filename,
int pmode
);
int _wcreat(
const wchar_t *filename,
int pmode
);
Parametreler
filename
Yeni dosyanın adı.
pmode
İzin ayarı.
Dönüş değeri
Bu işlevler başarılı olursa, oluşturulan dosyaya bir dosya tanımlayıcısı döndürür. Aksi takdirde, işlevler -1 döndürür ve aşağıdaki tabloda gösterildiği gibi ayarlanır errno
.
errno Değer |
Tanım |
---|---|
EACCES |
filename var olan bir salt okunur dosyayı belirtir veya dosya yerine bir dizin belirtir. |
EMFILE |
Başka dosya tanımlayıcısı yok. |
ENOENT |
Belirtilen dosya bulunamadı. |
ise filename
NULL
, bu işlevler Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EINVAL
ayarlanır errno
ve -1 döndürür.
Bunlar ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
_creat
İşlev yeni bir dosya oluşturur veya var olan bir dosyayı açar ve keser. _wcreat
, öğesinin _creat
geniş karakterli bir sürümüdür; filename
bağımsız değişkeni _wcreat
geniş karakterli bir dizedir. _wcreat
ve _creat
aksi takdirde aynı şekilde davran.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bunu değiştirmek için bkz . CRT'de Genel durum.
Genel metin yordamı eşlemeleri
Tchar.h yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS Tanımlanan |
_UNICODE Tanımlanan |
---|---|---|---|
_tcreat |
_creat |
_creat |
_wcreat |
tarafından filename
belirtilen dosya yoksa, verilen izin ayarıyla yeni bir dosya oluşturulur ve yazmak üzere açılır. Dosya zaten varsa ve izin ayarı yazmaya izin veriyorsa, _creat
dosyayı 0 uzunluğuna kadar keserek önceki içeriği yok eder ve yazmak üzere açar. İzin ayarı, pmode
yalnızca yeni oluşturulan dosyalar için geçerlidir. Yeni dosya, ilk kez kapatıldıktan sonra belirtilen izin ayarını alır. Tamsayı ifadesi pmode
, SYS\Stat.h içinde tanımlanan bildirim sabitlerinden _S_IWRITE
_S_IREAD
birini veya her ikisini de içerir. Her iki sabit de verildiğinde bit düzeyinde veya işleciyle ( |
) birleştirilir. pmode
parametresi aşağıdaki değerlerden birine ayarlanır.
Değer | Açıklama |
---|---|
_S_IWRITE |
Yazma izni verilir. |
_S_IREAD |
Okuma izni verilir. |
_S_IREAD | _S_IWRITE |
Okuma ve yazma izin verilir. |
Yazma izni verilmezse, dosya salt okunurdur. Tüm dosyalar her zaman okunabilir; yalnızca yazma izni vermek mümkün değildir. ve modları _S_IWRITE
_S_IREAD | _S_IWRITE
daha sonra eşdeğerdir. kullanılarak _creat
açılan dosyalar her zaman ile uyumluluk modunda açılır (bkz _sopen
. ) ile _SH_DENYNO
.
_creat
izinleri ayarlamadan önce geçerli dosya izni maskesini pmode
uygular (bkz _umask
. ). _creat
, öncelikle önceki kitaplıklarla uyumluluk için sağlanır. parametresinde oflag
ve _O_TRUNC
ile _O_CREAT
çağrısı_open
, ile eşdeğerdir _creat
ve yeni kod için tercih edilir.
Gereksinimler
Yordam | Gerekli başlık | İsteğe bağlı üst bilgi |
---|---|---|
_creat |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wcreat |
<io.h> veya <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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.
Ayrıca bkz.
Alt düzey G/Ç
_chmod
, _wchmod
_chsize
_close
_dup
, _dup2
_open
, _wopen
_sopen
, _wsopen
_umask
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin