私はCプログラミングを始めたばかりで、yまたはn文字のみを受け入れるプログラムを作成しようとしているときに、それに遭遇しました
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
printf("Do you want to continue\n");
for (;;)
{
ch=getchar();
if (ch=='Y' || ch=='y')
{
printf("Sure!\n");
break;
}
else if (ch=='N'||ch=='n')
{
printf("Alright! All the best!\n");
break;
}
else
{
printf("You need to say either Yes/No\n");
fflush(stdin);
}
}
return(0);
}
このコードを実行し、Y/y または N/n 以外の文字を入力すると、最後の printf ステートメント (Yes/No と答える必要があります) が出力として 2 回表示されます。enter、つまり「\n」を別の文字と見なすため、これが発生していることを理解しています。fflush を使用しても、無限ループになるため役に立ちません。最後のステートメントが一度だけ表示されるようにするには、他にどのように変更できますか?