Share via


_creat, _wcreat

建立新檔案。 _creat_wcreat 已被取代;請改用 。 _wsopen_s_sopen_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 找不到指定的檔案。

如果 filenameNULL ,這些函式會叫用不正確參數處理常式,如參數驗證 中所述 。 如果允許繼續執行,這些函式會將 errno 設定為 EINVAL ,並傳回 -1。

如需這些傳回碼和其他傳回碼的詳細資訊,請參閱 errno_sys_errlist_doserrno_sys_nerr

備註

_creat 函式會建立新的檔案,或開啟並截斷現有的檔案。 _wcreat 是寬字元版本的 _creatfilename_wcreat 引數是寬字元字串。 否則,_wcreat_creat 的行為即會相同。

根據預設,此函式的全域狀態會限定于應用程式。 若要變更它,請參閱 CRT 中的全域狀態。

泛型文字常式對應

Tchar.h 常式 _UNICODE_MBCS 未定義 _MBCS 定義 _UNICODE 定義
_tcreat _creat _creat _wcreat

如果 指定的 filename 檔案不存在,則會使用指定的許可權設定建立新的檔案,並開啟以供寫入。 如果檔案已存在且其權限設定允許寫入,_creat 會將檔案長度截斷至 0 並終結先前的內容,然後開啟檔案以供寫入。 權限設定 pmode 只會套用至新建立的檔案。 新檔案第一次關閉之後,會收到指定的許可權設定。 整數運算式 pmode 包含 SYS\Stat.h 中所定義的資訊清單常數 _S_IWRITE 及 (或) _S_IREAD。 提供這兩個常數時,它們會與位或運算子聯結。 | pmode 參數會設定為下列其中一個值。

定義
_S_IWRITE 允許寫入。
_S_IREAD 允許讀取。
_S_IREAD | _S_IWRITE 允許讀取和寫入。

如果未指定寫入權限,則檔案是唯讀的。 所有檔案一律可讀取;無法授與唯寫許可權。 因此,模式 _S_IWRITE_S_IREAD | _S_IWRITE 相同。 使用 _creat 開啟的檔案一律會以相容性模式開啟(請參閱 _sopen 使用 來 _SH_DENYNO 開啟 。

_creat 在設定許可權之前,將目前的檔案許可權遮罩套用至 pmode (請參閱 _umask )。 _creat 主要是為了與先前的程式庫相容所提供。 在 oflag 參數中使用 _O_CREAT_O_TRUNC 呼叫 _open 相當於 _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 );
   }
}
Created data file.

另請參閱

低階 I/O
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask