_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 找不到指定的文件。

如果 filenameNULL,这些函数则会调用无效的参数处理程序,如参数验证。 如果允许执行继续,则这些功能将 errno 设置为 EINVAL 并返回 -1。

有关这些和其他的返回代码的详细信息,请参阅 errno_doserrno_sys_errlist_sys_nerr

备注

_creat 函数创建一个新文件或打开并截断现有文件。 _wcreat_creat的宽字符版本; filename_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 清单常量中的一个或两个。 当给定这两个常数时,将使用按位 OR 运算符 (|) 连接它们。 pmode 参数可设置为下列值之一。

定义
_S_IWRITE 允许写入。
_S_IREAD 允许读取。
_S_IREAD | _S_IWRITE 允许读取和写入。

如果未授予写入权限,则该文件为只读。 所有文件始终具有可读性;不能提供只写权限。 模式 _S_IWRITE_S_IREAD | _S_IWRITE 是等效的。 使用 _creat 打开的文件始终在 _SH_DENYNO 中的兼容模式下打开(请参阅 _sopen)。

在设置这些权限之前,_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