Проверка диапазона вводимых значений
Необходимо проверить диапазон вводимых, при помощи 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;
}