_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 の設定 |
Description |
---|---|
EACCES |
filename既存の読み取り専用ファイルを指定するかまたはファイルではなくディレクトリを指定します。 |
EMFILE |
これ以上のファイル記述子は使用できません。 |
ENOENT |
指定されたファイルが見つかりません。 |
filename が null の場合これらの関数は パラメーターの検証 に説明されているように無効なパラメーター ハンドラーを呼び出します。実行の継続が許可された場合、これらの関数は errno を EINVAL に設定し、-1 を返します。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_creat の関数は新しいファイルを開くか作成します。また1 桁は切り捨てられます。_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 と _S_IREAD1 のいずれかまたは両方を定義して格納されます。定数が両方とも指定するとOR のビット処理演算子と結合 (|).pmode パラメーターには次の値の 1 に設定されます。
値 |
定義 |
---|---|
_S_IWRITE |
許可される書き込みます。 |
_S_IREAD |
許可される読み取り。 |
_S_IREAD | _S_IWRITE |
許可される読み取りと書き込み。 |
書き込みアクセス許可を指定しない場合ファイルは読み取り専用です。すべてのファイルを読み取り可能では; 書き込み専用アクセス許可を与えることは不可能です。モード _S_IWRITE と _S_IREAD| _S_IWRITE は同じです。_creat を使用して開くファイルは _SH_DENYNO 互換モード (_sopen を参照) 常に表示されます。
_creat は pmode にアクセス許可を設定する前に現在のファイルのアクセス許可マスクを適用します (_umask を参照してください。_creat は前のライブラリとの互換性が主になります。_O_CREAT の _open と oflag のパラメーターの _O_TRUNC の呼び出しは _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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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 );
}
}