freopen() - C語言庫函式


C庫函式 FILE *freopen(const char *filename, const char *mode, FILE *stream)關聯一個新的檔案名與給定的開啟流,同時關閉舊檔案流。

宣告

以下是freopen()函式的宣告。

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

引數

  • filename -- 這是C字串,其中包含要開啟的檔案名。

  • mode -- 這是C字串,其中包含檔案存取模式。它包括:

mode 描述
"r" 開啟一個檔案進行讀取。該檔案必須存在。
"w" 建立一個空的書面檔案。如果已經存在具有相同名稱的檔案,其內容被刪除的檔案被認為是一個新的空檔案。
"a" 附加到檔案中。寫入操作的資料追加在檔案末尾的。該檔案被建立,如果它不存在。
"r+" 開啟更新檔案閱讀和寫作。該檔案必須存在。
"w+" 建立一個空檔案,讀取和寫入。
"a+" 開啟一個檔案??讀取和追加。
  • stream -- 這是一個檔案物件的指標標識重新開啟流。

返回值

如果該檔案被重新開啟成功,則函式返回一個指標,指向一個物件識別流,否則返回空指標。

例子

下面的例子演示了如何使用freopen()函式。

#include <stdio.h>

int main ()
{
   FILE *fp;

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

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

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

   fclose(fp);
   
   return(0);
}

讓我們編譯和執行上面的程式,這將傳送以下行標準輸出,因為最初我們並沒有開啟的標準輸出:

This text is redirected to stdout

freopen()呼叫後,它關聯STDOUT檔案file.txt,所以我們在STDOUT 寫進入file.txt。因此,檔案file.txt將有以下內容。

This text is redirected to file.txt