Игра угадывания чисел C с проверкой isdigit ()
Я работаю над проблемой из моего учебника, где я должен сгенерировать случайное число от 1 до 10, позволить пользователю угадать и проверить его ответ с помощью isdigit (). Я (в основном) получил программу для работы с кодом ниже.
Основная проблема, с которой я столкнулся, заключается в том, что использование isdigit () требовало сохранения входных данных в виде символа, который я затем должен был преобразовать перед сравнением, чтобы сравнивалось действительное число, а не код ASCII для числа.
Итак, мой вопрос: поскольку это преобразование работает только для чисел 0–9, как я могу изменить код, чтобы позволить пользователю успешно угадать 10, когда это число генерируется? Или что, если бы я хотел, чтобы игра имела диапазон от 1 до 100 - как бы мне тогда этого добиться? Могу ли я не проверить ввод с помощью isdigit (), если я использую возможный диапазон больше 0-9? Какой лучший способ проверить ввод пользователя?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
int main(void) {
char buffer[10];
char cGuess;
char iNum;
srand(time(NULL));
iNum = (rand() % 10) + 1;
printf("%d\n", iNum);
printf("Please enter your guess: ");
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%c", &cGuess);
if (isdigit(cGuess))
{
cGuess = cGuess - '0';
if (cGuess == iNum)
printf("You guessed correctly!");
else
{
if (cGuess > 0 && cGuess < 11)
printf("You guessed wrong.");
else
printf("You did not enter a valid number.");
}
}
else
printf("You did not enter a correct number.");
return(0);
}