何らかの理由で、ユーザーが 'j' や '%' などの間違ったデータ型を入力すると、ループは入力の要求を停止"Enter an integer >"
し、何度も表示し続けます。プログラムに不正な入力を処理させるにはどうすればよいですか? また、数値以外の値を入力すると、なぜこのような奇妙な動作が発生するのでしょうか?
#define SENTINEL 0;
int main(void) {
int sum = 0; /* The sum of numbers already read */
int current; /* The number just read */
do {
printf("\nEnter an integer > ");
scanf("%d", ¤t);
if (current > SENTINEL)
sum = sum + current;
} while (current > SENTINEL);
printf("\nThe sum is %d\n", sum);
}