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つのテキストファイルに出力する.
#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で.