freopen 〜画面に表示されるはずの文字をファイルに保存する〜


目次に戻る


実はそろそろ小技のネタが切れてきました。こういう機能を紹介してくれとかあったらメールをください。
 
今日紹介する関数は標準入出力(stdin,stdout)や標準エラー出力(stderr)に出力(入 力)されるデータをファイルに保存したり、ファイルから読み出したりする際に利用します。
 
以前紹介した dup と似ていますが、Ansiで定められた標準ライブラリに含まれるも のなので、WindowsでもUnixでも利用することができます。
 
ただ、画面に表示される文字列をファイルに保存したいときはコマンドプロンプトから  > を使用すればよいし本来キーボードから入力するデータをファイル等から入力させ たい時は | を利用すれば良いのでこの関数の使い道ってあまり無いような気がします 。
 
考えられる物としては、デバッグ時のエラー情報は画面に表示し、リリース時(出荷 時)のエラー情報はログファイルに保存したい。というような場合次のような使い方をする 事が考えられます。
 
 
#include <stdio.h>

#define DEBUG  1   /* リリース時はこの 宣言を消す  */

int main()
{
    int errorno = 0;

#ifndef DEBUG
   freopen("error.log","at",stderr);
#endif

        :
   if( errorno ){
       fprintf(stderr , "Error! No = %d\n",errorno );
   }

   return errorno;
}



目次に戻る