freopen関数とfopen関数の簡単な紹介

3577 ワード

偶然freopenという関数に出会って、最初はfopenとかと同じだと思っていましたが、closeを見つけてうまく出力できませんでした.まずfopen()について話しましょう.
1. fopen()
C言語でファイルの入出力を使用する場合、最も一般的なのはそれかもしれません.
 fopen呼び出しの一般的な形式は、  =fopen( , )
  • ファイルのポインタ名は、FILEタイプのポインタ変数でなければなりません.
  • ファイル名、開かれたファイル名
  • ファイルの使用方法は、ファイルのタイプと操作要件であり、以下のいくつかがあります.
  • r(read):読み取り専用;
  • w(write):書くだけ;
  • a(append):追加;
  • t(text):テキストファイル、省略可能;
  • b(binary):バイナリファイル.
  • +:読み書き

  •   開方式は以上のいくつかの基本タイプを組み合わせたもので、注意:
  • rは、ファイルが存在しなければならず、ファイルからしか読めないファイルを開く.
  • wファイルを開くには、そのファイルを書き込むしかありません.ファイルが存在しない場合は、自動的に新規作成されます.ファイルが既に存在する場合は、元のファイルを削除して
  • を新規作成します.
    この関数の使い方は次のとおりです.
    FILE *fp1,*fp2; //        
    fp1=fopen("input.in","r"); // fopen       (r)      input.in;
    fp2=fopen("output.out","w");// fopen       (w)      output.out;
    
    fscanf(fp1,"%d",&temp);//fscanf        ,fp1        ;
    fprintf(fp2,"%d",temp);//fprintf        ,fp2        ;
    
    fclose(fp1);//      。
    fclose(fp2);

     fopen関数を有効にするには、特定の関数fscanf、fprintfがファイルに対して操作する必要があります.通常のscanfとprintfは、コマンドラインインタフェースで動作します.
    2. freopen()
      freopenこの関数は、ACMで広く応用されている.ACMの試験問題には大量の入力データがある可能性があるため、プログラムの実行は一度に成功するのではなく、実行するたびに再入力するのに時間がかかるため、freopenはテストデータの重複入力問題を解決することができる.
    関数宣言:
    FILE * freopen(const char *filename, const char *mode,FILE *stream);

    パラメータの説明:
  • filename:開くファイル名;
  • mode:ファイルが開くモードはfopenのモード(r/w)と同じです.
  • stream:ファイルポインタ、通常は標準ストリームファイル(stdin/stdout/stderr)
  • を使用
    使用方法:
    freopen("data.in","r",stdin); 
    freopen("data.out","w",stdout);
    
    fclose(stdin);
    fclose(stdout);

     freopen()関数は、指定したファイルを指すように標準ストリームにリダイレクトするため、scanfおよびprintfを変更する必要はありません.
    確かに便利でしょうが、まだ解決しなければならない問題があります.freopenで標準ストリームを指定したファイルにリダイレクトしましたが、画面にいくつかの情報を出力したい場合はどうすればいいのでしょうか.
     fopen関数は、fprintfとprintfの2つの関数から、それぞれファイルとコンソールに出力されます.freopen関数では、関数のfilenameパラメータを変更して、標準ストリームをコンソールに出力する必要があります.このコンソールデバイスファイルの名前はオペレーティングシステムに関連しています.
    DOS、Winシステム:
    freopen("CON","r",stdin);
    freopen("CON","w",stdout);

    Linux:
    freopen("/dev/console","r",stdin);

    これにより、必要なデータの一部がファイルに出力され、コンソールに出力されるようになります.これにより、プログラムに簡単なインタラクション能力が得られます.