freopen関数の使い方
6866 ワード
freopen関数の概要
freopenは、C規格のヘッダファイルstdioに含む.hの関数で、入出力ストリームをリダイレクトします.この関数は、コードの原形を変更することなく、入出力環境を変更することができるが、使用時にストリームが信頼できることを保証しなければならない.
freopen関数の説明
関数名:freopen関数で、指定したモードで別のファイルに再指定します.モードは、新しいファイルへのアクセス方法を指定します.ヘッダファイル:stdio.h C 89関数声明:*FILE freopen(const char filename,const char mode,FILE stream);C 99関数宣言:FILE freopen(const char*restrict filename,const char*restrict mode,FILE*restrict stream);パラメータの説明:filename:リダイレクトするファイル名またはファイルパスが必要です.mode:ファイルアクセス権を表す文字列.例えば、「r」は「読取り専用アクセス」、「w」は「書込みのみアクセス」、「a」は「追加書込み」を表す.stream:リダイレクトされるファイルストリームが必要です.戻り値:成功した場合は、出力ストリームを指すファイルポインタを返します.そうでない場合はNULLを返します.
プログラムインスタンス
追加説明:stdout(Standardoutput)標準出力stdin(Standardinput)標準入力stderr(Standarderror)標準エラー
例1
この例では、stdoutからテキストファイルへのリダイレクトを実現します.すなわち、画面に出力されたテキストを1つのテキストファイルに出力する.
実行結果:Dディスクルートディレクトリのテキストファイルoutputに10個の数が出力.txtで.
例2
ファイルからtxtにデータを読み込む、outに加算出力する.txt中
実行結果:Dディスクルートディレクトリのテキストファイルoutput 2に計算および出力.txtで.
freopenは、C規格のヘッダファイルstdioに含む.hの関数で、入出力ストリームをリダイレクトします.この関数は、コードの原形を変更することなく、入出力環境を変更することができるが、使用時にストリームが信頼できることを保証しなければならない.
freopen関数の説明
関数名:freopen関数で、指定したモードで別のファイルに再指定します.モードは、新しいファイルへのアクセス方法を指定します.ヘッダファイル:stdio.h C 89関数声明:*FILE freopen(const char filename,const char mode,FILE stream);C 99関数宣言:FILE freopen(const char*restrict filename,const char*restrict mode,FILE*restrict stream);パラメータの説明:filename:リダイレクトするファイル名またはファイルパスが必要です.mode:ファイルアクセス権を表す文字列.例えば、「r」は「読取り専用アクセス」、「w」は「書込みのみアクセス」、「a」は「追加書込み」を表す.stream:リダイレクトされるファイルストリームが必要です.戻り値:成功した場合は、出力ストリームを指すファイルポインタを返します.そうでない場合はNULLを返します.
プログラムインスタンス
追加説明:stdout(Standardoutput)標準出力stdin(Standardinput)標準入力stderr(Standarderror)標準エラー
例1
この例では、stdoutからテキストファイルへのリダイレクトを実現します.すなわち、画面に出力されたテキストを1つのテキストファイルに出力する.
#include "stdafx.h"
#include
int _tmain(int argc, _TCHAR* argv[])
{
if(freopen("D:\\output.txt","w",stdout)==NULL)
fprintf(stderr,"error redirecting stdout
");
for(int i=0;i<10;i++)
printf("%3d",i);
printf("
");
fclose(stdout);
return 0;
}
実行結果:Dディスクルートディレクトリのテキストファイルoutputに10個の数が出力.txtで.
例2
ファイルからtxtにデータを読み込む、outに加算出力する.txt中
#include "stdafx.h"
#include
int _tmain(int argc, _TCHAR* argv[])
{
int a,b;
freopen("D:\\in.txt","r",stdin);
freopen("D:\\output2.txt","w",stdout);
while(scanf("%d%d",&a,&b)!=EOF)
printf("%d
",a+b);
fclose(stdin);
fclose(stdout);
return 0;
}
実行結果:Dディスクルートディレクトリのテキストファイルoutput 2に計算および出力.txtで.