eof() はどのような場合に悪い習慣ですか?
C の eof() 関数は、終了かどうかを判断するために使用されます。ファイル入力中にファイル (EOF) 条件が発生しました。これは貴重なツールである可能性がありますが、潜在的な誤解のためにその使用が不適切であると考えられるシナリオがあります。
より多くの入力が利用可能かどうかをテストするためにループ条件で eof() を使用することは、一般的に推奨されません。これは、eof() はファイルの終わりを超えて読み取りが試行されたことを示すだけであり、読み取るデータがもうないことを示すものではないためです。したがって、読み取りループの継続を判断するのに信頼性がありません。
たとえば、次のコード スニペットはループを制御するために eof() を誤って使用しています。
while (!cin.eof()) { cin >> foo; }
このシナリオでは、ループはすべてのデータが入力ストリームから読み取られた後でも、無期限に続行されます。正しい実装では、代わりに読み取り操作の成功をテストします。
if (!(cin >> foo)) { if (cin.eof()) { // Reached the end of file } else { // An error occurred during the read } }
ファイルの終わりを検出するという本来の目的にのみ eof() を使用することで、開発者はあいまいさを回避し、読み取りループを確実に行うことができます。期待通りに動作します。
以上がC 読み取りループで `eof()` を使用することが悪い習慣とみなされるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。