ストリームを閉じるか (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 を使用してユーザーが割り当てたバッファーは、自動的に解放されません。
Note
fcloseまたは_fcloseall関数を使用してストリームを閉じると、基になるファイル記述子と OS ファイル ハンドル (またはソケット) も閉じられます。 したがって、ファイルが最初にファイル ハンドルまたはファイル記述子として開き、 fcloseで閉じられている場合は、 _close を呼び出してファイル記述子を閉じないでください。また、ファイル ハンドルを閉じるには Win32 関数 CloseHandle を呼び出さないでください。
fclose と _fcloseall には、他のスレッドからの干渉に対処するコードが含まれています。 _fclose_nolock のロックしないバージョンについては、「fclose」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
| 機能 | 必須ヘッダー |
|---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
fopen の例を参照してください。
関連項目
ストリーム入出力
_close
_fdopen, _wfdopen
fflush
fopen, _wfopen
freopen, _wfreopen