_fdopen、_wfdopen
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 |
+ |