_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パラメーターの検証」で説明されているように、これらの関数は無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、これらの関数は errnoEINVAL に設定し、-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 には、 に定義されている、マニフェスト定数 _S_IWRITE_S_IREAD に一方または両方が含まれます。 両方の定数が指定されると、ビットごとのまたは演算子 ( | ) で結合されます。 pmode パラメーターには次のいずれかの値を設定されます。

Value 定義
_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>

互換性の詳細については、「 Compatibility」を参照してください。

// 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