freopen,_wfreopen
stdio.h:インデックス への移動
ヘッダーファイル
stdio.h
カテゴリ
入出力ルーチン
プロトタイプ
FILE *freopen(const char *filename, const char *mode, FILE *stream);
FILE *_wfreopen(const wchar_t *filename, const wchar_t *mode, FILE *stream);
説明
オープンストリームに新しいファイルを関連付けます。
freopen は,オープンストリームを指定されたファイルに置き換えます。また,正しく開かれたかどうかにかかわらずストリームを閉じます。freopen は,stdin,stdout,または stderr に関連付けられたファイルを変更するために役立ちます。
fopen の呼び出しに使用される mode 文字列は,次のいずれかの値です。
r | 読み出し専用で開きます。 | w | 書き込み用に作成します。 | a | 追加します。ファイルの終わりに書き込むようにファイルを開きます。ファイルが存在しない場合は,書き込み用にファイルを作成します。 | r+ | 既存のファイルを更新(読み出しと書き込み)用に開きます。 | w+ | 更新(読み出しと書き込み)用に新しいファイルを作成します。 | a+ | 追加用に開きます。ファイルの終わりで更新するために開きます(ファイルが存在しない場合は作成する)。 |
---|
指定したファイルをテキストモードで開くまたは作成するには,mode 文字列に t を追加します(rt,w+t など)。同様に,バイナリモードを指定するには,mode 文字列に b を追加します(wb,a+b など)。
mode 文字列で t または b が指定されていない場合,モードは,グローバル変数 _fmode で制御されます。_fmode が O_BINARY に設定されている場合,ファイルはバイナリモードで開かれます。_fmode が O_TEXT に設定されている場合,ファイルはテキストモードで開かれます。これらの O_... 定数は,fcntl.h で定義されています。
ファイルを更新用に開く場合は,取得したストリームで入力と出力の両方を実行できます。
- 出力の直後に入力を続けることはできません。間に fseek または rewind を入れる必要があります。
- 入力の直後に出力を続けることはできません。間に fseek または rewind を入れるか,入力がファイルの終わり(EOF)に到達する必要があります。
戻り値
成功した場合,freopen は,引数 stream を返します。
エラーが発生した場合は,NULL を返します。
例
#include <stdio.h>
int main(void)
{
/* 標準出力をファイルにリダイレクトします */
if (freopen("OUTPUT.FIL", "w", stdout)
== NULL)
fprintf(stderr, "error redirecting stdout\n");
/* この出力はファイルに行われます */
printf("This will go into a file.");
/* 標準出力ストリームを閉じます */
fclose(stdout);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
freopen |
+ |
+ |
+ |
+ |
_wfreopen |
NT のみ |