freopen_s _wfreopen_s
將檔案指標。 這些是 freopen, _wfreopen 版本與安全性增強的如 安全性功能,則在 CRT 中中所述。
errno_t freopen(
FILE** pFile,
const char *path,
const char *mode,
FILE *stream
);
errno_t _wfreopen(
FILE** pFile,
const wchar_t *path,
const wchar_t *mode,
FILE *stream
);
參數
[out] pFile
對呼叫中提供的檔案指標的指標。[in] path
新的檔案路徑。[in] mode
允許存取的型別。[in] stream
指向 FILE 結構的指標。
傳回值
這些函式都會傳回錯誤碼。 如果發生錯誤,原始檔案已關閉。
備註
freopen_s 函式會關閉檔案目前與 stream 並重新指派 stream 到 path. 指定的檔案 _wfreopen_s 。 _freopen_s寬字元版本;為 _wfreopen_s 的 path 和 mode 引數是寬字元字串。 _wfreopen_s 和 _freopen_s 其餘行為相同。
如果有 pFile、 path、 mode或 stream 是 NULL,或者,如果 path 是空字串,這些函式叫用無效的參數處理常式,如 參數驗證中所述。 如果執行允許繼續, EINVAL 和 EINVAL傳回的這些函式設定的 errno 。
泛用文字常式對應
TCHAR.H 常式 |
未定義 _UNICODE & _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tfreopen_s |
freopen_s |
freopen_s |
_wfreopen_s |
freopen_s 通常用來將目前開啟的檔案 stdin、 stdout和 stderr 使用者重新導向至指定的檔案。 新檔案與 stream 如下以 mode開啟*,* 是指定存取的類型字串要求檔案,例如:
"r"
開啟進行讀取、。 如果檔案不存在或找不到, freopen_s 呼叫失敗。"w"
開啟撰寫的空檔案。 如果指定的檔案存在,終結它的內容。"a"
撰寫會在檔案 (附加) 結束時,如果沒有移除 EOF 標記將新資料加入檔案;,如果不存在,請先建立檔案。"r+"
用於讀取和寫入開啟。 (檔案必須存在)。"w+"
開啟讀取和寫入的空檔案。 如果指定的檔案存在,終結它的內容。"a+"
用於讀取和附加開啟;附加的作業包括 EOF 標記的移除,新資料寫入檔案之前,且 EOF 標記還原,在寫入完成後;,如果不存在,請先建立檔案。
請使用 "w" 和 "w+" 型別,此型別,它們可以終結現有檔案。
當檔案開啟時呼叫了 "a" 或 "a+" 存取型別時,任何寫入作業可以發生在檔案結尾。 使用 fseek 或 rewind,雖然檔案指標可以重新調整位置,檔案指標一定會移回至檔案結尾,在任何寫入作業之前。 因此,現有資料無法覆寫。
"a" 方法不在附加之前移除 EOF 標記加入至檔案。 在附加之後發生, MS-DOS 型別命令只會顯示資料由原始 EOF 標記決策和沒有任何資料附加至檔案。 "a+" 方法在附加之前移除 EOF 標記加入至檔案。 在附加之後, MS-DOS 型別順序檔中的所有資料。 "a+" 方法對於附加所終止 CTRL+Z EOF 標記資料流檔案。
當 "r+", 為 "w+", 或 "a+" 存取型別指定時,讀取和寫入允許 (檔案被視為開啟為「Update」的按鈕)。 然而,在中,當您在讀取和寫入之間,必須有介入的 fsetpos、 fseek或 回溯 作業。 如果需要目前位置可以為 fsetpos 或 fseek 作業指定。 除了上述值之外,下列其中一個字元在 mode 字串可能包含為新行指定版本模式。
t
開啟文字 (轉換) 模式;重設為一組 (CR-LF) 組合轉譯成在輸入的單一新行字元 (LF) 字元;LF 字元轉譯為匯出的 CR-LF 組合。 此外, CTRL+Z 是解譯成輸入的檔案結尾字元。 如果可以在用來撰寫和讀取開啟以供讀取或檔案與 "a+",執行階段程式庫檢查 CTRL+Z 在檔案結尾,並移除它。 因為使用 fseek 和 ftell 在檔案內移動可能造成 fseek 在檔案結尾附近,不正確的行為完成。 t 選項不應使用中的 Microsoft Extensions ANSI 可攜性所需的位置。b
開啟二進位 (未轉譯的) 模式;上述轉譯會隱藏。
如果 t 或 b 是 mode不會重新命名,版本模式的預設是由全域變數 _fmode定義的。 如果 t 或 b 前置引數,函式失敗並傳回 NULL。
如需文字和二進位模式的討論,請參閱 文字和二進位模式檔案 I/O。
需求
Function |
必要的標頭檔 |
---|---|
freopen_s |
<stdio.h> |
_wfreopen_s |
<stdio.h> 或 <wchar.h> |
主控台 Windows 市集 應用程式不支援。 標準資料流控制代碼與主控台, stdin, stdout和 stderr,在這種情況下, C 執行階段函式在 Windows 市集 應用程式之前,可以使用它們必須重新導向。 如需其他相容性資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// crt_freopen_s.c
// This program reassigns stderr to the file
// named FREOPEN.OUT and writes a line to that file.
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
int main( void )
{
errno_t err;
// Reassign "stderr" to "freopen.out":
err = freopen_s( &stream, "freopen.out", "w", stderr );
if( err != 0 )
fprintf( stdout, "error on freopen\n" );
else
{
fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
fprintf( stream, "This will go to the file 'freopen.out'\n" );
fclose( stream );
}
system( "type freopen.out" );
}
.NET Framework 對等用法
System::IO::FileStream::FileStream