C ライブラリ関数 -freopen()
説明
C ライブラリ関数FILE *freopen(const char *filename, const char *mode, FILE *stream)新しいファイル名をfilename指定された開いているストリームとstream関連付け、同時にストリーム内の古いファイルを閉じます。
宣言
以下は freopen() 関数の宣言です。
FILE *freopen(const char *filename, const char *mode, FILE *stream)
引数
- filename-- これは、開くファイルの名前を含む C 文字列です。
- mode-- これは、ファイルアクセスモードを含む C 文字列です。モードは次のとおりです。
| モード | 説明 |
|---|---|
| "r" | 読み取り用にファイルを開きます。そのファイルは存在している必要があります。 |
| "w" | 書き込み用の空ファイルを作成します。ファイル名が既存のファイルと同じ場合、既存のファイルの内容は削除され、ファイルは新しい空ファイルとみなされます。 |
| "a" | ファイルに追記します。書き込み操作はファイルの末尾にデータを追加します。ファイルが存在しない場合は、ファイルを作成します。 |
| "r+" | 更新用のファイルを開きます。読み取りも書き込みも可能です。そのファイルは存在している必要があります。 |
| "w+" | 読み書き用の空ファイルを作成します。 |
| "a+" | 読み取りと追記用のファイルを開きます。 |
- stream-- これは、再オープンされるストリームを識別する FILE オブジェクトへのポインタです。
戻り値
ファイルが正常に開かれた場合、関数はストリームを識別するオブジェクトを指すポインタを返します。それ以外の場合は、ヌルポインタを返します。
例
以下の例は、freopen() 関数の使用方法を示しています。
#include <stdio.h>
int main ()
{
FILE *fp;
printf("该文本重定向到 stdout\n");
fp = freopen("file.txt", "w+", stdout);
printf("该文本重定向到 file.txt\n");
fclose(fp);
return(0);
}
上記のプログラムをコンパイルして実行してみましょう。最初に標準出力を開いていないため、次の行が標準出力 STDOUT に送信されます。
该文本重定向到 stdout
呼び出しのfreopen()後、標準出力 STDOUT をファイルに関連付けますfile.txt、標準出力 STDOUT に何を書き込んでも file.txt に書き込まれるため、ファイル file.txt には次の内容が含まれます。
该文本重定向到 file.txt
次に、以下のプログラムを使用して上記のファイルの内容を確認してみましょう。
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
その他の拡張機能
C 標準ライブラリ - <stdio.h>