ホームページ > バックエンド開発 > C++ > C でファイルから整数を読み取るときに二重読み取りを防ぐにはどうすればよいですか?

C でファイルから整数を読み取るときに二重読み取りを防ぐにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-02 19:11:40
オリジナル
145 人が閲覧しました

How to Prevent Double Reads When Reading Integers from a File in C  ?

EOF までのファイルからの整数の読み取り: 二重読み取りの回避

提供された C コードは、テキスト ファイルから最後に到達するまで整数を読み取ります。ファイルの(EOF)。ただし、最後の行を 2 回読み取るため、出力が繰り返されます。これは次の理由で発生します。

  • 最後の整数 (この例では 30) を読み取って EOF をチェックすると、EOF マークは読み取られないままになります。
  • 次の反復では、同じ整数 ( 30) はまだ入力バッファに格納されており、EOF は正しく検出されています。
  • 整数は 2 回出力されます。前の反復のバッファーと現在の EOF チェックから再度チェックします。

解決策:

この問題を解決するには、EOF の読み取り時に終了する while ループを使用します。

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

この中でループ:

  • 整数がバッファに読み込まれます。
  • EOF に達すると、ループは終了します。
  • それ以外の場合、整数は標準エラーに出力されます。

このアプローチにより、最後の整数のみが出力されます。

注:

元のコードには、空のファイルを読み取ろうとするという別の潜在的な問題がありました。これは、ストリームがオープンしていて EOF でないかどうかを確認する読み取り操作を if ステートメント内に埋め込むことで解決できます。

以上がC でファイルから整数を読み取るときに二重読み取りを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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