Juego de adivinanzas de números C con verificación isdigit ()

Estoy trabajando en un problema de desafío de mi libro de texto donde se supone que debo generar un número aleatorio entre 1-10, dejar que el usuario adivine y validar su respuesta con isdigit (). Conseguí (en su mayoría) el programa para trabajar con el código a continuación.

El problema principal que encontré es que usar isdigit () requería que la entrada se almacenara como un char, que luego tuve que convertir antes de la comparación, por lo que se comparó el número real y no el código ASCII para el número.

Entonces, mi pregunta es que, dado que esta conversión solo funciona para los números del 0 al 9, ¿cómo puedo cambiar el código para permitir que el usuario adivine correctamente 10 cuando ese es el número que se genera? O, ¿qué pasaría si quisiera que el juego tuviera un rango de 1-100? ¿Cómo lograría esto? ¿No puedo verificar la entrada con isdigit () si estoy usando un rango posible mayor que 0-9? ¿Cuál es una mejor manera de verificar la entrada del usuario?

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta