I wrote the following code in C to make a program which calculate the factorial of any number.
I want to add to my program some validation/error handling, such as preventing random characters, floats or negative values from being entered, so I used the isdigit function.
Unfortunately there is a hidden problem which I don't know how to solve. When I enter any input it considers it to be false (i.e. not a digit) even if it's a positive digit.
#include <stdio.h>
#include <ctype.h>
int main()
{
    char choice;
    unsigned long long int factorial=1;
    int counter,number;
    for(;;)
    {
        printf("Please , enter a positive integer number only : ");
        scanf("%d",&number);
        fflush(stdin);
        if(isdigit(number))
        {
            for(counter=number;counter>1;counter--)
            factorial*=counter;
            printf("The factorial of number %d is %llu",number,factorial);
        }
        else
        {
            printf("\a\aError\n");
            continue;
        }
        printf("\n1-Press c or C if you want to calculate the factorial of a new number\n2-Press any key         if you want to exit the program\n ");
        scanf("%c",&choice);
        if(choice=='c'||choice=='C')
        {
            factorial=1;
            system("cls");
            continue;
        }
        else
        return 0;
    }
}
 
     
     
     
    