この関数の目的
feof()は、ストリームの「ファイルの終わり」指示子を調べる。
定義
#include <stdio.h> int feof(FILE *stream);
働き>
この関数は stream で指されるストリームのファイルの終わり指定子を検査し、セットされていた場合にのみゼロでない数を返す。
解説
バイナリストリームを読み込んでいる場合、 getc() などの返り値に EOF
が出て来たとしても、
それはバイナリのデータかファイルの終わりを示すのか区別できない。そんな時にこの関数が役に立つ。
以下に、典型的な「バイナリファイルを終わりまで読み込む」ループを示す。 name はファイル名である。
{ FILE *fp; int c; if(fp = fopen(name, "rb")){ for(; (c = getc(fp)) != EOF || !feof(fp);){ /* ... */ } } }
なお、テキストストリームでは返り値だけでファイルの終わりを判断してもかまわない。