關閉資料流 (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