vs低バージョンバッファの問題について

4746 ワード

c言語でよく発生する問題の1つは、scanf受信時のバッファがクリアされていないことによるプログラム実行エラーです.例を挙げると、前のブログで計算機についてのブログを書きましたが、この計算機は1回の演算で停止し、入力を続けるにはループと判断を増やさなければなりませんが、最初に実行したデータを入力してenterを押すと終了します
do
 {
  printf("input data: 
format: data operator data
"
); scanf("%d %c %d", &a, &op, &b); // 12 + 23 Counter(a, b, op); printf(" (Y/N)
"
); scanf("%c", &ch); } while ('Y' == ch || 'y' == ch); }

その理由は,キャッシュ領域が現在格納されている場合enterループ条件が成立しないため,キャッシュ領域をクリアして入力すればよいからである.

do{
format: data operator data 
"); fflush(stdin); scanf("%d %c %d", &a, &op, &b); // 12 + 23 Counter(a, b, op); printf(" (Y/N)
"
); fflush(stdin); scanf("%c", &ch); } while ('Y' == ch || 'y' == ch);

ちょっと浅はかなご意見をどうぞよろしくお願いします