Игра угадывания чисел 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);
}

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

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