fclose, _fcloseall

關閉資料流 (fclose) 或關閉所有開啟的資料流 (_fcloseall)。

語法

int fclose(
   FILE *stream
);
int _fcloseall( void );

參數

stream
FILE 結構的指標。

傳回值

如果成功關閉資料流,fclose 會傳回 0。 _fcloseall 會傳回關閉的資料流總數。 兩個函式都傳回 EOF 表示錯誤。

備註

fclose 函式會關閉 stream。 如果 streamNULL ,則會叫用不正確參數處理常式,如參數驗證 中所述 。 若允許繼續執行,fclose 會將 errno 設為 EINVAL 且傳回 EOF。 建議您一律先檢查指標, stream 再呼叫此函式。

如需傳回碼的詳細資訊,請參閱 errno_doserrno_sys_errlist_sys_nerr

_fcloseall 函式會關閉所有開啟的資料流,除了stdinstdoutstderr (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