fclose() — ストリームのクローズ
フォーマット
#include <stdio.h>
int fclose(FILE *stream);
言語レベル
ANSI
スレッド・セーフ
はい
説明
fclose() 関数は stream で示されるストリームをクローズします。この関数は、ストリームをクローズする前に、そのストリームと関連付けられたすべてのバッファーを削除します。 ストリームをクローズする場合、この関数はシステムが予約したすべてのバッファーを開放します。 バイナリー・ストリームがクローズされる場合は、ファイル内の最後のレコードがそのレコードの終わりまでヌル文字 (\0) で埋められます。
戻り値
ストリームが正常にクローズされた場合は、fclose() 関数は 0 を戻し、エラーが検出された場合は EOF を戻します。
errno の値は、次のいずれかに設定されます。
- 値
- 意味
- ENOTOPEN
- ファイルはオープンされていません。
- EIOERROR
- リカバリー不能な入出力エラーが発生しました。
- EIORECERR
- リカバリー可能な入出力エラーが発生しました。
- ESCANFAILURE
- ファイルは走査失敗のマークを付けられました。
注: FILE ポインターが指すストレージは、fclose() 関数によって解放されます。fclose() 関数を使用した後は、FILE ポインターを使用するすべての試行が無効です。
例
次の例は、ファイル myfile をオープンしてストリームとして読み込み、その後にこのファイルをクローズします。
#include <stdio.h>
#define NUM_ALPHA 26
int main(void)
{
FILE *stream;
char buffer[NUM_ALPHA];
if (( stream = fopen("mylib/myfile", "r"))!= NULL )
{
fread( buffer, sizeof( char ), NUM_ALPHA, stream );
printf( "buffer = %s¥n", buffer );
}
if (fclose(stream)) /* Close the stream. */
perror("fclose error");
else printf("File mylib/myfile closed successfully.¥n");
}