1. ホーム
  2. c

[解決済み] fflush(stdin)の使用法

2023-03-16 03:33:54

質問

ということで、Googleで検索してみると fflush(stdin) を Google で検索すると、それを使用しないように警告している多数の Web サイトが見つかります。しかし、私の CS 教授が授業で教えたのは、まさにこの方法でした。

を使うことがどれほど悪いことなのでしょうか? fflush(stdin) ? 教授が使っていて、問題なく動作しているように見えるのに、本当に使用を控えるべきでしょうか?

どのように解決するのですか?

単純なことですが、これは未定義の動作です。 fflush は出力ストリーム上で呼ばれることを意図しているからです。これは C 標準からの抜粋です。

int fflush(FILE *ostream);

ostreamは、出力ストリームまたは 更新ストリームを指します。 最近の操作が入力でなかった場合、fflush関数は fflush関数は、そのストリームの未書き込みの そのストリームのデータは ファイルに書き込まれる。 をファイルに書き込む。 は未定義です。

つまり、これは "どの程度悪い"かという問題ではありません。 fflush(stdin) は単純に移植性がないので、もしあなたのコードがコンパイラ間で移植可能であることを望むのであれば、これを使うべきではありません。