fclose
, _fcloseall
關閉資料流 (fclose
) 或關閉所有開啟的資料流 (_fcloseall
)。
語法
int fclose(
FILE *stream
);
int _fcloseall( void );
參數
stream
FILE
結構的指標。
傳回值
如果成功關閉資料流,fclose
會傳回 0。 _fcloseall
會傳回關閉的資料流總數。 兩個函式都傳回 EOF
表示錯誤。
備註
fclose
函式會關閉 stream
。 如果 stream
為 NULL
,將會叫用無效參數處理常式,如參數驗證 (部分機器翻譯) 中所述。 若允許繼續執行,fclose
會將 errno
設為 EINVAL
且傳回 EOF
。 建議您一律先檢查指標, stream
再呼叫此函式。
如需傳回碼的詳細資訊,請參閱errno
、 _doserrno
_sys_errlist
和 _sys_nerr
。
_fcloseall
函式會關閉所有開啟的資料流,除了stdin
、stdout
、stderr
(MS-DOS 要加上 _stdaux
和 _stdprn
)。 它也會關閉並刪除 tmpfile
建立的所有暫存檔案。 在這兩個函式中,所有與資料流相關聯的緩衝區都會先排清再關閉。 關閉資料流時,會釋放系統配置的緩衝區。 由使用者指派的 setbuf
緩衝區,且 setvbuf
不會自動釋放。
注意
當 或 _fcloseall
函式用來關閉數據流時fclose
,基礎檔案描述元和 OS 檔句柄(或套接字)也會關閉。 因此,如果檔案原本是以檔句柄或檔案描述元開啟,並且以 fclose
關閉 ,請勿同時呼叫 以關閉檔案描述元;而且不要呼叫 _close
Win32 函式 CloseHandle
來關閉檔句柄。
fclose
和 _fcloseall
包含程式碼,保護不受其他執行緒的干擾。 如需非鎖定版本的 fclose
,請參閱 _fclose_nolock
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
函式 | 必要的標頭 |
---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
如需相容性詳細資訊,請參閱相容性。
範例
請參閱 fopen
的範例。
另請參閱
資料流 I/O
_close
_fdopen
, _wfdopen
fflush
fopen
, _wfopen
freopen
, _wfreopen