C-standard-library-c-function-freopen

提供:Dev Guides
移動先:案内検索

Cライブラリ関数-freopen()

説明

Cライブラリ関数 FILE freopen(const char filename、const char mode、FILE * stream)は、新しい *filename を指定されたオープンストリームに関連付け、同時にストリーム内の古いファイルを閉じます。

宣言

以下はfreopen()関数の宣言です。

FILE *freopen(const char *filename, const char *mode, FILE *stream)

パラメーター

  • ファイル名-これは、開くファイルの名前を含むC文字列です。
  • mode -これはファイルアクセスモードを含むC文字列です。 それが含まれています-
Sr.No. Mode & Description
1

"r"

読み取り用にファイルを開きます。 ファイルが存在する必要があります。

2

"w"

書き込み用の空のファイルを作成します。 同じ名前のファイルがすでに存在する場合、その内容は消去され、ファイルは新しい空のファイルと見なされます。

3

"a"

ファイルに追加します。 書き込み操作は、ファイルの最後にデータを追加します。 ファイルが存在しない場合は作成されます。

4

"r+"

ファイルを開いて、読み取りと書き込みの両方を更新します。 ファイルが存在する必要があります。

5

"w+"

読み取りと書き込みの両方のために空のファイルを作成します。

6

"a+"

読み取りおよび追加のためにファイルを開きます。

  • stream -これは、再オープンされるストリームを識別するFILEオブジェクトへのポインタです。

戻り値

ファイルが正常に再度開かれた場合、関数はストリームを識別するオブジェクトへのポインターを返します。そうでない場合は、nullポインターが返されます。

次の例は、freopen()関数の使用法を示しています。

#include <stdio.h>

int main () {
   FILE *fp;

   printf("This text is redirected to stdout\n");

   fp = freopen("file.txt", "w+", stdout);

   printf("This text is redirected to file.txt\n");

   fclose(fp);

   return(0);
}

最初にstdoutを開かなかったため、STDOUTで次の行を送信する上記のプログラムをコンパイルして実行します-

This text is redirected to stdout
  • freopen()を呼び出した後、STDOUTをファイル *file.txt に関連付けるため、STDOUTで書き込む file.txt 内にあるものは何でも。 したがって、ファイル file.txt には次の内容が含まれます。
This text is redirected to 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);
}