_fdopen、_wfdopen

提供: RAD Studio
移動先: 案内検索

stdio.h:インデックス への移動


ヘッダー ファイル

stdio.h

カテゴリ

入出力ルーチン

プロトタイプ

FILE *_fdopen(int handle, char *type);

FILE *_wfdopen(int handle, wchar_t *type);

説明

ストリームをファイル ハンドルに関連付けます。

_fdopen は、creat、dup、dup2、または open から取得したファイル ハンドルにストリームを関連付けます。

ストリームのタイプは開いているハンドルのモードと一致していなければなりません。

_fdopen の呼び出しで使用する type 文字列には以下のいずれかの値を指定します。

r

読み取り専用で開きます。 ファイルを開けない場合、_fdopen は NULL を返します。

w

書き込み用に作成します。 ファイルが既に存在する場合、その内容は上書きされます。

a 

追加します。つまり、ファイル終端へ書き込めるように開くか、ファイルが存在しない場合には書き込み用に作成します。

r+ 

既存ファイルを更新(読み取りおよび書き込み)用に開きます。 ファイルを開けない場合、_fdopen は NULL を返します。

w+ 

新しいファイルを更新用に作成します。 ファイルが既に存在する場合、その内容は上書きされます。

a+ 

追加用に開きます。つまり、ファイル終端で更新できるように開くか、ファイルが存在しない場合には更新用に作成します。



ファイルをテキスト モードで開くまたは作成するよう指定するには、type 文字列の値の後に t を追加します(rt、w+t など)。

同様に、バイナリ モードを指定するには、type 文字列の後に b を追加します(rb、w+b など)。

type 文字列に t も b も指定されていない場合、モードはグローバル変数 _fmode によって決まります。

_fmode が O_BINARY に設定されている場合、ファイルはバイナリ モードで開かれます。

_fmode が O_TEXT に設定されている場合、ファイルはテキスト モードで開かれます。

メモ:O_... で始まる定数は fcntl.h で定義されています。

ファイルを更新用に開くと、そのストリームに対して入力と出力の両方を行うことができます。ただし、

  • 出力の直後に入力を行うことはできません。間に fseek または rewind を行う必要があります。
  • 入力の直後に出力を行うことはできません。間に fseek または rewind を行うか、入力がファイル終端(EOF)に到達している必要があります。

戻り値

正常に終了した場合、_fdopen は新しく開いたストリームのポインタを返します。 エラーの場合には NULL を返します。

#include <sys\stat.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main(void)
{
   int handle;
   FILE *stream;
   /* open a file */
   handle = open("DUMMY.FIL", O_CREAT | O_WRONLY,
                  S_IREAD | S_IWRITE);
   /* now turn the handle into a stream */
   stream = fdopen(handle, "w");
   if (stream == NULL)
      printf("fdopen failed\n");
   else
   {
      fprintf(stream, "Hello world\n");
      fclose(stream);
   }
   return 0;
}

移植性

POSIX Win32 ANSI C ANSI C++

_fdopen

+

+

_wfdopen

+