Q.
EOFとは何か?
A
EOFとは "End of File" の略で、ファイルの終わりを示すマーカーまたは特殊な状態を意味します。これは、ファイルの読み取りを行っているプログラムが、これ以上読み取るデータがないことを認識するために使用されます。
C言語では、read
やfread
などのファイル読み取り関数がファイルの終わりに達すると、EOFを返すことがあります。このEOFは通常、-1として表されます。
なお、EOFはファイルの終端に達したことだけでなく、エラーが発生した場合にも返されることがあります。そのため、ファイルの終わりに達したのか、それともエラーが発生したのかを判断するためには、通常は追加のエラーチェックを行う必要があります。
また、ファイルを文字単位で読み取る場合の getc
や fgetc
関数でも、ファイルの終わりに達した場合にはEOFが返されます。これらの関数の場合、EOFは通常、整数値の-1として表されます。
以下は、典型的な入力ループの例です:
c
Copy code
int c;
while *1 != EOF) {
// 文字の処理
}
この例では、getchar()から返される値がEOFでない限り、ループが継続されます。EOFが返されると、ループが終了します。
ただし、EOFの値が必ずしも-1であるとは限りません。具体的な値は処理系やプラットフォームに依存しますので、プログラム中でEOFの値を直接比較する代わりに、<stdio.h>ヘッダーで提供されるEOFの定義を使用することをおすすめします。
*1:c = getchar(