ホームページ > バックエンド開発 > C++ > C コードが EOF まで読み込むときにテキスト ファイルの最後の行を 2 回出力するのはなぜですか?

C コードが EOF まで読み込むときにテキスト ファイルの最後の行を 2 回出力するのはなぜですか?

Barbara Streisand
リリース: 2024-12-30 04:16:09
オリジナル
980 人が閲覧しました

Why Does My C   Code Print the Last Line of a Text File Twice When Reading Until EOF?

EOF までのテキスト ファイルからの読み取り: 最後の行の重複の解決

提供された C コードは、次のコードが見つかるまでテキスト ファイルから整数を読み取ります。ファイルの終わり (EOF) インジケーター。ただし、ファイルの最後の整数が誤って 2 回出力されます。これは、プログラムのループ構造内で EOF インジケーターがどのように処理されるかによるものです。

実行中、プログラムは、EOF インジケーターが検出されるまで継続するループに入ります。ループがファイルを反復処理すると、ファイルから整数「x」がフェッチされ、コンソールに出力されます。ただし、ファイル内の最後の整数が読み取られた後、EOF インジケーターが発生します。

この問題は、ループ条件が最後の整数 "x" をフェッチした後に EOF を評価するために発生します。これは、前の反復でロードされたのと同じ値「x」でループが続行され、事実上 2 回出力されることを意味します。

この問題を解決するには、EOF インジケーターをチェックするようにループ条件を変更する必要があります。整数をフェッチしようとする前に。これは、少し異なるループ構造を使用することで実現できます。

while (iFile) {
    int x;
    iFile >> x;
    if (iFile) {
        cerr << x << endl;
    }
}
ログイン後にコピー

この変更されたループでは、「iFile」オブジェクトがループ条件として使用され、EOF インジケーターを暗黙的にチェックします。 「iFile」が true (ファイルが EOF にないことを示す) の場合、プログラムは整数をフェッチして出力します。 "iFile" が false (EOF を示す) の場合、ループは終了します。

この調整を実装することにより、プログラムは EOF に達するまでテキスト ファイルから整数を読み取り、各整数を 1 回出力することで、最後の行が 2 回出力されます。

以上がC コードが EOF まで読み込むときにテキスト ファイルの最後の行を 2 回出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート