共用方式為


資料流 I/O

這些函式用不同的大小和格式處理資料,從單一字元到大型資料結構。 它們也提供緩衝區,這可以改善效能。 資料流緩衝區的預設大小為 4K。 這些常式只影響執行階段程式庫常式建立的緩衝區,並對作業系統所建立的緩衝區無效。

資料流 I/O 常式

常式

用法

.NET Framework 對等用法

clearerr, clearerr_s

清除資料流的錯誤指示器。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

fclose

關閉資料流。

System::IO::Stream::CloseSystem::IO::BinaryReader::CloseSystem::IO::BinaryWriter::CloseSystem::IO::TextReader::CloseSystem::IO::TextWriter::CloseSystem::IO::StringReader::CloseSystem::IO::StringWriter::CloseSystem::IO::StreamReader::CloseSystem::IO::StreamWriter::Close

_fcloseall

關閉所有除了 stdin、 stdout和 stderr開啟的資料流。

System::IO::Stream::CloseSystem::IO::BinaryReader::CloseSystem::IO::BinaryWriter::CloseSystem::IO::TextReader::CloseSystem::IO::TextWriter::CloseSystem::IO::StringReader::CloseSystem::IO::StringWriter::CloseSystem::IO::StreamReader::CloseSystem::IO::StreamWriter::Close

_fdopen, wfdopen

與開啟檔案的檔案描述項關聯資料流

System::IO::FileStream::FileStream

feof

測試在資料流中的檔案結尾

System::IO::FileStream::Read

ferror

測試資料流的錯誤

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

fflush

清除緩衝區或儲存裝置的資料流

System::IO::FileStream::Flush

fgetc、fgetwc

從資料流 ( getc 和 getwc的函式版本) 讀取字元

System::IO::StreamReader::Read.

_fgetchar、_fgetwchar

讀取 stdin ( getchar 和 getwchar的函式版本) 的字元

System::Console::Read

fgetpos

取得資料流的位置指示器

System::IO::FileStream::Position

fgets、fgetws

從資料流讀取字串

System::IO::StreamReader::ReadLineSystem::IO::TextReader::ReadBlock

_fileno

取得與檔案描述關連的資料流

System::IO::FileStream::Handle

_flushall

清除所有緩衝區或儲存裝置的資料流

System::IO::FileStream::FlushSystem::IO::StreamWriter::FlushSystem::IO::TextWriter::FlushSystem::IO::BinaryWriter::Flush

fopen, _wfopen, fopen_s、_wfopen_s

開啟資料流

System::IO::File::Open

fprintf、_fprintf_l、fwprintf、_fwprintf_l, fprintf_s、_fprintf_s_l、fwprintf_s、_fwprintf_s_l

將格式化資料寫入資料流。

System::IO::StreamWriter::Write

fputc、fputwc

將字元寫入至資料流 ( putc 和 putwc之函式的版本)

System::IO::StreamWriter::Write

_fputchar、_fputwchar

將字元寫入 stdout ( putchar 和 putwchar的函式版本)

System::Console::Write

fputs、fputws

寫入資料至資料流

System::IO::StreamWriter::Write

fread

從資料流讀取未格式化的資料。

System::IO::FileStream::Read

freopen, _wfreopen, freopen_s、_wfreopen_s

將 FILE 資料流指標重新指定至新的檔案或裝置

System::IO::File::Open

fscanf, fwscanffscanf_s、_fscanf_s_l、fwscanf_s、_fwscanf_s_l

從資料流讀取格式化的資料。

System::IO::StreamReader::ReadLine;請參閱 Parse 方法,例如 System::Double::Parse

fseek、_fseeki64

移動檔案位置至特定位置。

System::IO::FileStream::PositionSystem::IO::FileStream::Seek

fsetpos

設定資料流的位置指示器

System::IO::FileStream::Position

_fsopen、_wfsopen

開啟檔案共用的資料流。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

ftell、_ftelli64

取得目前檔案位置

System::IO::FileStream::Position

fwrite

寫入未格式化的資料項目至資料流

System::IO::FileStream::Write

getc、getwc

從資料流 ( fgetc 和 fgetwc的巨集版本) 讀取字元

System::IO::StreamReader::Read.

getchar、getwchar

讀取 stdin ( fgetchar 和 fgetwchar的巨集版本) 的字元

System::Console::Read

_getmaxstdio

傳回在資料流 I/O 層級中允許的同時開啟的檔案數目。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

gets, getws, gets_s、_getws_s

從 stdin中讀取行。

System::Console::Read

_getw

從資訊流讀取二進位檔案 int

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

printf、_printf_l、wprintf、_wprintf_l,printf_s、_printf_s_l、wprintf_s、_wprintf_s_l

將格式化資料寫入 stdout

System::Console::Write

putc、putwc

寫入字元至資料流 ( fputc 和 fputwc 的巨集版本)

System::IO::StreamWriter::Write

putchar、putwchar

將字元寫入 stdout ( fputchar 和 fputwchar的巨集版本)

System::Console::Write

puts、_putws

寫入行至資料流

System::Console::Write

_putw

寫入二進位檔案 int 至資料流

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

rewind

移動檔案位置至資料流的開頭

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

_rmtmp

刪除 tmpfile建立的暫存檔案。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

scanf、_scanf_l、wscanf、_wscanf_l,scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l

讀取格式化的資料來源stdin

System::Console::ReadLine;請參閱 Parse 方法,例如 System::Double::Parse

setbuf

控制資料流緩衝區

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

_setmaxstdio

設定於資料流 I/O 層級中最大同時開啟的檔案數目。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

setvbuf

控制流程緩衝區和緩衝區大小

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

_snprintf, _snwprintf_snprintf_s、_snprintf_s_l、_snwprintf_s、_snwprintf_s_l

寫入指定長度的格式化資料至字串。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

_snscanf, _snwscanf_snscanf_s、_snscanf_s_l、_snwscanf_s、_snwscanf_s_l

從標準輸入資料流讀取指定長度的格式化資料。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

sprintf, swprintfsprintf_s、_sprintf_s_l、swprintf_s、_swprintf_s_l

將格式化資料寫入字串

System::String::Format

sscanf, swscanfsscanf_s、_sscanf_s_l、swscanf_s、_swscanf_s_l

從字串讀取格式化的資料。

請參閱 Parse 方法,例如 System::Double::Parse

_tempnam, _wtempnam

在指定的目錄中產生暫存檔名

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

tmpfile, tmpfile_s

建立暫存檔案

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

tmpnam, _wtmpnamtmpnam_s、_wtmpnam_s

產生暫存檔名

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

ungetc、ungetwc

將字元推回資料流。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

_vcprintf, _vcwprintf, _vcprintf_s、_vcprintf_s_l、_vcwprintf_s、_vcwprintf_s_l

寫入格式化資料至主控台。

System::Console::Write

vfprintf, vfwprintf, vfprintf_s、_vfprintf_s_l、vfwprintf_s、_vfwprintf_s_l

將格式化資料寫入資料流。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

vprintf, vwprintf, vprintf_s、_vprintf_s_l、vwprintf_s、_vwprintf_s_l

將格式化資料寫入 stdout

System::Console::Write

_vsnprintf, _vsnwprintf, vsnprintf_s、_vsnprintf_s、_vsnprintf_s_l、_vsnwprintf_s、_vsnwprintf_s_l

寫入指定長度的格式化資料至緩衝區。

不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例

vsprintf, vswprintf, vsprintf_s、_vsprintf_s_l、vswprintf_s、_vswprintf_s_l

寫入格式化資料至緩衝區。

System::String::Format

在程式開始執行時,啟始程式碼會自動開啟數個資料流:標準輸入 (指向 stdin),標準輸出 (指向 stdout) 和標準錯誤 (指向 stderr)。 這些資料流會預設導向主控台 (鍵盤和螢幕) 。 使用 freopen 以重導向 stdin、 stdout或 stderr 至磁碟檔案或裝置。

使用資料流常式開啟的檔案預設被緩衝。 每當它們已滿,或是如果您在每個程式庫呼叫之後寫入字元裝置,stdout 和 stderr 函式將被清除。 如果程式異常終止,輸出緩衝區可能無法清除,造成資料遺失。 使用 fflush 或 _flushall 確保緩衝區與所指定檔案或所有開啟的緩衝區清除到作業系統,它們可以在寫入磁碟之前快取資料。 提交到硬碟功能確保系統失敗時,清除緩衝區的內容不會遺失。

有兩種方式將緩衝區的內容寫入磁碟:

  • 設定全域的檔案 COMMODE.OBJ 的連結做旗標。 全域旗標的預設值為 n,意思是「不提交」。

  • 設定模式旗標 c 至 fopen 或 _fdopen。

所有檔案明確地與 c 或 n 旗標開啟會根據旗標執行,忽略全域狀態 commit/no-commit 旗標。

如果程式未明確關閉資料流,則當程式結束時資料流會自動關閉。 不過,您應該在程式完成時關閉資料流,因為一次可開啟的資料流數目是有限的。 如需這項限制的詳細資訊,請參閱 _setmaxstdio

輸入只能在介入呼叫 fflush 或檔案置放函式 (fseek、 fsetpos或 rewind) 直接跟隨在輸入之後 。 如果輸入作業遇到檔案結尾,輸出可以不用介入呼叫檔案置放函式以跟隨在輸入之後。

請參閱

參考

輸入和輸出

依分類區分的執行階段常式