scanf
не имеет функции, чтобы делать то, что вы хотите. Вы можете просто использовать if
для проверки ввода.
if(scanf("%d", &diceResult) != 1 || diceResult < 2 || diceResult > 12) {
//handle invalid input here
}
Если ввод неверен, это зависит от вас, что вы хотите сделать. Вы можете проигнорировать ввод и попросить пользователя ввести действительное число, вы можете выйти из всей программы или просто проигнорировать ошибку, или что-то еще полностью.
Вы также можете повторно проверить ввод с помощью while
:
while(scanf("%d", &diceResult) != 1 || diceResult < 2 || diceResult > 12) {
//prompt user to enter valid input here
}
Как упомянуто chux, частью обработки неверного ввода будет вычисление неверного ввода и проверка EOF.
scanf("%d", &diceResult) != 1
будет гарантировать, что scanfна самом деле прочитал ровно одно число, и ошибок синтаксического анализа не произошло.