當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


C++ freopen()用法及代碼示例

C++ 中的freopen() 函數嘗試使用與另一個打開的文件相關聯的文件流打開一個新文件。

freopen() 函數在<cstdio> 頭文件中定義。

freopen()原型

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

freopen 函數首先嘗試關閉使用 stream 打開的文件。文件關閉後,它會嘗試以參數 mode 指定的模式打開參數 filename 指定的文件名(如果它不為空)。最後,它將文件與文件流 stream 相關聯。

如果 filename 是空指針,則 freopen() 函數會嘗試重新打開已與 stream 關聯的文件。

參數:

  • filename:要打開的新文件。
  • mode:打開文件的模式。不同類型的文件訪問方式如下:
文件操作的不同模式
文件訪問模式 解釋 如果文件存在 如果文件不存在
"r" 以讀取模式打開文件 從頭開始閱讀 Error
"w" 以寫入模式打開文件 刪除所有內容 創建新文件
"a" 以追加模式打開文件 從頭開始寫 創建新文件
"r+" 以讀寫模式打開文件 從頭開始閱讀 Error
"w+" 以讀寫模式打開文件 刪除所有內容 創建新文件
"a+" 以讀寫模式打開文件 從頭開始寫 創建新文件
  • stream :要關聯文件名的文件流。

返回:

freopen() 函數返回:

  • 流成功。
  • 失敗時為 NULL。

示例:freopen() 函數如何工作?

#include <cstdio>
#include <cstdlib>

int main()
{
    FILE* fp = fopen("test1.txt","w");
    fprintf(fp,"%s","This is written to test1.txt");

    if (freopen("test2.txt","w",fp))
        fprintf(fp,"%s","This is written to test2.txt");
    else
    {
        printf("freopen failed");
        exit(1);
    }

    fclose(fp);
    return 0;
}

運行程序時:

The following will be written to test1.txt:
This is written to test1.txt
The following will be written to test2.txt:
This is written to test2.txt

相關用法


注:本文由純淨天空篩選整理自 C++ freopen()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。