次の方法で共有


_creat、_wcreat

更新 : 2007 年 11 月

新しいファイルを作成します。Visual C++ 2005 では、_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 を返します。

リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。

解説

_creat 関数は、新しいファイルを作成するか、既存のファイルを開いて切り詰めます。ワイド文字の場合、_creat ではなく _wcreat を使用します。_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_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>

互換性の詳細については、「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 );
   }
}

Created data file.

参照

参照

下位入出力

_chmod、_wchmod

_chsize

_close

_dup、_dup2

_open、_wopen

_sopen、_wsopen

_umask