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