Проверка диапазона вводимых значений

Необходимо проверить диапазон вводимых, при помощи scanf, значений от 0 до 3 в поле структуры (перечисление). Подскажите пожалуйста в чём ошибка?

printf_s("Ведите категорию: ");
scanf_s("%d", &a->category);
while (scanf_s("%d", &a->category) < 0 || scanf_s("%d", &a->category) > 3)
{
    printf("Неверное полученное значение, попробуйте еще: ");
    scanf_s("%d", &a->category);
}

Ответы (1 шт):

Автор решения: JK_Action

scanf_s: Возвращает число успешно преобразованных и назначенных полей.

т.е. вы неверно итерпритируете результат - проверять надо переменные. И коментатор выше прав, Вы зачем то лишний раз перед циклом читаете значение.

printf_s("Ведите категорию: ");
while(true){
   scanf_s("%d", &a->category);
   if (a->category < 0 || a->category > 3) {
      //можно зациклится :)
      printf_s("Неверное полученное значение, попробуйте еще: ");
   }
   else break;
}
→ Ссылка