Jogo de adivinhação de números C com verificação de isdigit ()

Eu estou trabalhando em um problema de desafio do meu livro onde eu deveria gerar um número aleatório entre 1-10, deixe o usuário adivinhar e validar sua resposta com isdigit (). Eu (principalmente) tenho o programa para trabalhar com o código abaixo.

O principal problema que eu tive foi que usar o isdigit () exigiu que a entrada fosse armazenada como um caractere, o qual eu tive que converter antes da comparação para que o número real fosse comparado e não o código ASCII para o número.

Então, minha pergunta é: como essa conversão funciona apenas para números de 0 a 9, como posso alterar o código para permitir que o usuário adivinhe com sucesso 10 quando esse é o número gerado? Ou se eu quisesse que o jogo tivesse um intervalo de 1-100 - como eu conseguiria isso? Não posso verificar a entrada com isdigit () se estou usando um intervalo possível maior que 0-9? Qual é a melhor maneira de verificar a entrada do usuário?

#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