◐ Shell
clean mode source ↗

std::feof - cppreference.com

提供: cppreference.com

<tbody> </tbody>

int feof( std::FILE* stream );

指定されたファイルストリームの終端に達したかどうか調べます。

引数

戻り値

ストリームの終端に達した場合は非ゼロの値、そうでなければ 0

ノート

この関数は最も最近の入出力操作によって報告されたストリームの状態を報告するだけです。 紐付けられているデータソースは調べられません。 例えば、最も最近の入出力が std::fgetc であって、それがファイルの最後のバイトを返した場合、 std::feof はゼロを返します。 次の std::fgetc は失敗し、ストリームの状態をファイル終端に変更します。 その後にのみ、 std::feof は非ゼロを返します。

一般的な使用方法では、何らかのエラーが発生した場合に入力ストリームの処理を停止します。 feof および std::ferror は、そのとき、異なるエラー状況を区別するために使用することができます。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE* fp = fopen("test.txt", "r");
    if(!fp) {
        perror("File opening failed");
        return EXIT_FAILURE;
    }

    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) { // standard C I/O file reading loop
       putchar(c);
    }

    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
        puts("End of file reached successfully");

    fclose(fp);
}

関連項目