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++ free()用法及代碼示例
- C++ frexp()用法及代碼示例
- C++ fread()用法及代碼示例
- C++ fcvt()用法及代碼示例
- C++ fwscanf()用法及代碼示例
- C++ fmax()用法及代碼示例
- C++ fdim()用法及代碼示例
- C++ fmin()用法及代碼示例
- C++ fetestexcept()用法及代碼示例
- C++ forward_list::unique()用法及代碼示例
- C++ forward_list::emplace_front()用法及代碼示例
- C++ fopen()用法及代碼示例
- C++ forward_list::max_size()用法及代碼示例
- C++ forward_list::reverse()用法及代碼示例
- C++ feupdateenv()用法及代碼示例
- C++ forward_list::swap()用法及代碼示例
- C++ forward_list::front()、forward_list::empty()用法及代碼示例
- C++ functional::bad_function_call用法及代碼示例
- C++ find_if()用法及代碼示例
- C++ find()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ freopen()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。