ホームページ > バックエンド開発 > C++ > C ファイルループで EOF に達したときに最後の行の読み取りが重複しないようにするにはどうすればよいですか?

C ファイルループで EOF に達したときに最後の行の読み取りが重複しないようにするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-27 13:01:14
オリジナル
528 人が閲覧しました

How to Prevent Duplicated Last Line Reads When Reaching EOF in a C   File Loop?

EOF ループでの最後の行の重複読み取りを修正

元の問題は、テキスト ファイルからファイルの終わり (EOF) まで読み取るときに発生します。 )に達します。提供されている C コードは、EOF 表示の処理が遅延しているため、最後の行を 2 回繰り返し取得します。

これを修正するには、次の一連のイベントに従います。

  1. 最初の整数を取得します。 10.
  2. 20 に進みます。
  3. 30 を読んで次に進みます。 EOF チェック。
  4. EOF に達していないため、ループは継続します。以前の値 30 はまだ x に保存されています。
  5. EOF が検出されると、x は値 30 を保持し、ios::eofbit フラグが設定されます。
  6. x の値は、前の反復と一致する 30 として出力されます。
  7. ループ条件が評価され、EOF に遭遇したため、ループは

この問題に対処するには、コードに次の変更を加えることができます:

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

この修正されたコードでは、ファイルの終わりに達するまでループが継続します。 、最後の行が 1 回だけ読み取られるようにします。また、空のファイルの場合も適切に処理します。

以上がC ファイルループで EOF に達したときに最後の行の読み取りが重複しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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