_creat _wcreat
建立新的檔案。 _creat與_wcreat已被取代。 使用_sopen_s _wsopen_s相反。
int _creat(
const char *filename,
int pmode
);
int _wcreat(
const wchar_t *filename,
int pmode
);
參數
filename
新的檔案名稱。pmode
權限設定。
傳回值
這些函式中,如果成功的話,請回到建立的檔案中的檔案描述項。 否則,函數會傳回 – 1,並設定errno下表所示。
errno 設定 |
描述 |
---|---|
EACCES |
filename指定現有的唯讀檔案,或指定的目錄,而非檔案。 |
EMFILE |
沒有更多的檔案描述項都可以使用。 |
ENOENT |
找不到指定的檔案。 |
如果filename為 NULL,如所述,這些函式叫用無效的參數處理常式中, 參數驗證。 如果執行,則允許繼續執行,這些函式會設定errno到EINVAL ,並傳回-1。
如需有關這些及其他的傳回碼的詳細資訊,請參閱 _doserrno、 errno、 _sys_errlist,以及 _sys_nerr。
備註
_creat函式會建立一個新的檔案或開啟並會將其截斷現有的平台。 _wcreat寬字元版本的_creat。 filename引數為_wcreat是寬字元字串。 _wcreat與_creat其他方式完全相同。
泛用文字常式對應
Tchar.h 常式 |
_Unicode 之後,未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tcreat |
_creat |
_creat |
_wcreat |
如果指定的檔案,藉由filename不存在,會以指定的使用權限設定來建立新的檔案,然後開啟進行寫入。 如果檔案已經存在,而且它的權限設定可讓撰寫時, _creat會將其截斷為長度 0,終結舊內容中,檔案,並開啟它進行寫入。 [使用權限] 設定中, pmode,會套用至新建立的檔案。 第一次關閉後,新的檔案就會收到指定使用權限設定。 整數運算式pmode包含一或兩個資訊清單常數_S_IWRITE和_S_IREAD,已定義在 SYS\Stat.h 中。 當有兩個常數時,它們與位元聯結OR運算子 ( |). pmode參數設定為下列值之一。
值 |
定義 |
---|---|
_S_IWRITE |
允許使用的筆跡。 |
_S_IREAD |
讀取允許。 |
_S_IREAD | _S_IWRITE |
允許讀取與寫入。 |
如果未指定的寫入權限,該檔案是唯讀的。 所有的檔案永遠可讀取的。 就無法授與唯寫屬性的權限。 模式_S_IWRITE和_S_IREAD| _S_IWRITE接著會相等。 使用開啟_creat永遠都相容性模式下開啟 (請參閱 _sopen) 與_SH_DENYNO。
_creat套用至目前的檔案使用權限遮罩pmode之前設定的權限 (請參閱 _umask)。 _creat提供主要目的是為了與前一個文件庫相容性。 呼叫_open與_O_CREAT和_O_TRUNC在oflag參數相當於_creat ,最好為新的程式碼。
需求
常式 |
所需的標頭 |
選擇性標頭 |
---|---|---|
_creat |
<io.h> |
<sys/types.h>,<sys/stat.h>,<errno.h> |
_wcreat |
<io.h> 或者 <wchar.h> |
<sys/types.h>,<sys/stat.h>,<errno.h> |
如需相容性資訊,請參閱相容性在簡介中。
範例
// 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 );
}
}