Gra zgadująca z numerem C z weryfikacją isdigit ()

Pracuję nad problemem wyzwania z mojego podręcznika, w którym mam wygenerować losową liczbę od 1-10, pozwolić zgadnąć użytkownikowi i zweryfikować ich odpowiedź za pomocą isdigit (). W większości przypadków program działa z poniższym kodem.

Głównym problemem, na jaki się natknąłem, jest to, że użycie isdigit () wymagało, aby dane wejściowe były przechowywane jako znaki, które następnie musiałem przekonwertować przed porównaniem, aby rzeczywista liczba została porównana, a nie kod ASCII dla numeru.

Więc moje pytanie brzmi: skoro ta konwersja działa tylko dla liczb 0 - 9, jak mogę zmienić kod, aby umożliwić użytkownikowi pomyślne odgadnięcie 10, kiedy jest to liczba, która jest generowana? A może chciałbym, żeby gra miała zakres 1-100 - jak mógłbym to osiągnąć? Czy nie mogę zweryfikować danych wejściowych za pomocą isdigit (), jeśli używam możliwego zakresu większego niż 0-9? Jaki jest lepszy sposób weryfikacji danych wprowadzanych przez użytkownika?

#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);
}

questionAnswers(1)

yourAnswerToTheQuestion