%>
创建新文件。 _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。
有关这些和其他的返回代码的详细信息,请参阅 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.