HIR-NET Home
運営者
オンラインソフト
運営者著書
CG
HIR-NETリンク集
C言語辞典
fclose関数
fclose function
語源
file close(ファイル閉鎖)
分類
C/C++標準ライブラリ/関数/入出力関数/ファイルアクセス関数
名称
ファイルクローズ関数(file close function)
対義
fopen関数
関連
EOFマクロ, fflush関数
解説
fclose関数は、ファイルをクローズさせる関数です。ストリーム*stream についてフラッシュを行い、ファイルをクローズ(close)し、ストリームをファイルから切り離します。このとき、ストリームに対し書き出されていないバッファ内のデータはファイルに書き出すためにホスト環境に引き渡されます。読み込まれていないバッファ内のデータは捨てられます。自動的に割り付けられていたバッファは解放されます。
関数原型宣言ヘッダ
<stdio.h>
関数原型宣言例
ストリーム
↓
int fclose(FILE *stream);
↓
0 :成功
EOF:失敗
関数返却値
①ファイルが正しくクローズされた場合は 0 を返します。
②エラーが検出された場合は EOF を返します。
注意1
出力ストリームに 1文字も出力しなかったファイルをクローズすると、長さ0 のファイルとなりますが、それが実際に存在するかどうかは処理系に依存します。
注意2
返却値の確認が必要なのは出力ストリームについてです。なぜなら、出力先のディスクの残量が怪しげな場合は出力されたデータの一部が失われた可能性があるからです。
落とし穴1
fclose(NULL) の動作は未定義です。
落とし穴2
FILE *s; において fclose(s)呼出の後の s は無意味になります。このクローズ済みの s を再度 fclose(s) した場合の動作は未定義です。場合によってはファイルシステムをおかしくすます。例えば別のファイルをクローズしてしまうこともあります。
ファイルのクローズの仕方
// fclose1.c
#include <stdio.h> // FILE,NULL,fopen,fclose
#include <stdlib.h> // EXIT_FAILURE,EXIT_SUCCESS,exit,abort
int main(void)
{
FILE *sget; // 入力ストリーム Stream GET
sget=fopen("ファイル名","r");
if(sget==NULL)
{ // オープンチェック
printf("fopen失敗\n");
exit(EXIT_FAILURE);
}
//…
if(fclose(sget))
{ // クローズ
printf("fclose失敗\n");
abort();
}
return EXIT_SUCCESS;
} // main
実行結果
「ファイル名」が存在すれば、そのファイルをオープンしクローズ(ただし、クローズが失敗したら「fclose失敗⏎」を出力し異常終了します)。存在しなれば「fopen失敗⏎」を出力します。
HIR-NET Home
運営者
オンラインソフト
運営者著書
CG
HIR-NETリンク集
◆リンクは、ご自由にお張りください。
Copyright © 1988-2017 Hirabayashi Masahide プライバシーポリシー