_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, 则函数调用无效参数处理程序, 如参数验证 所述. 如果允许执行继续,则这些功能将 EINVAL 设置为 errno 并返回 -1。

有关这些属性和其他的更多信息返回代码示例,请参见 _doserrno、errno、_sys_errlist 和 _sys_nerr

备注

_creat 函数创建新文件,或打开并截断现有的文件。 _wcreat 是 _creat 的宽字符版本;_wcreat 的 filename 参数是宽字符字符串。 _wcreat 和 _creat 行为相同,否则。

一般文本例程映射

Tchar.h 例程

未定义 _UNICODE 和 _MBCS

已定义 _MBCS

已定义 _UNICODE

_tcreat

_creat

_creat

_wcreat

如果 filename 指定的文件不存在,则创建具有特定权限设置的新文件,并打开文件以便编写。 如果该文件已经存在,并且设置其权限为允许写入, _creat 文件截断为长度为 0,破坏以前内容,并打开以便编写。 权限设置,pmode,仅应用于新创建的文件。 在首次关闭后,新文件接收指定的权限设置。 整数表达式 pmode 包含SYS \Stat.h中定义的一个或全部清单常数:_S_IWRITE and _S_IREAD。 当给定两个常数,则用按位或运算符OR联接 |). 在这种情况下,pmode 参数被设置为下列值之一。

定义

_S_IWRITE

允许写。

_S_IREAD

允许读取。

_S_IREAD | _S_IWRITE

允许读取和写入。

如果不授予写权限,此文件是只读的。 所有文件始终可读的;生成只写权限是不可能的。 模式| _S_IWRITE 和_S_IWRITE_S_IREAD是等效的。 使用 _creat打开的文件,始终在_SH_DENYNO兼容模式中打开(参见 _sopen) 。

_creat在权限设置权限之前,对pmode应用当前文件权限掩码(参见 _umask)。 _creat 主要是为了与以前的库兼容。 在 oflag 参数中,以_O_CREAT 和 _O_TRUNC为值调用_open,等效于 _creat 且新代码倾向于前者。

要求

例程

必需的标头

可选标头

_creat

<io.h>

<io.h>, <sys/stat.h>, <sys/types.h>

_wcreat

<io.h> or <wchar.h>

<io.h>, <sys/stat.h>, <sys/types.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 );
   }
}
  

请参见

参考

低级别 I/O

_chmod、_wchmod

_chsize

_close

_dup、_dup2

_open、_wopen

_sopen、_wsopen

_umask