почему scanf не ждет пользовательского ввода после одного сбоя?

Я столкнулся с проблемой в моем коде ниже. Когда я ввожу любое целое число, то есть(0-9)тогда все нормально. Но когда я ввожу некоторые другие символы, такие какA, B или любое другое письмоscanf() выходит из строя. Затем он не ждет дальнейшего ввода.

Я приложил фрагмент кода для этого. Я настоятельно требую обработки ошибок, используя только стандартную библиотеку C.

#include <stdio.h>

int main()
{
    int choice;
    while(1)
    {
        printf("Enter your choice: ");
        if(0 == scanf("%d", &choice))
          {
              printf("Some error occured\n");
              //break;/*I did not want to break this loop as I use this to show menu*/
          }

        switch(choice)
         {
                      case 0:printf("Case 0\n");break;
                      case 1:printf("Case 1\n");break;
                      case 2:printf("Case 2\n");break;
                      case 3:printf("Case 3\n");break;
                      case 4:printf("Case 4\n");break;
                      case 5:printf("Case 5\n");break;
                      case 6:printf("Case 6\n");break;
                      case 7:printf("Case 7\n");break;
                      case 8:printf("Case 8\n");break;
                      case 9:printf("Case 9\n");break;
                      default:printf("Default case\n");break;

         }
    }
}

Более ясный вопрос: почему он не ждет после сбоя?

Ответы на вопрос(2)

Ваш ответ на вопрос