为什么 isdigit() 不起作用?

Why doesn't isdigit() work?

我正在尝试制作一个生成随机数的程序,要求用户猜测然后回答他是否猜对了。出于某种原因,无论用户是否输入数字,它都会像没有输入一样做出响应。有任何想法吗?感谢您帮助初学者 :)

#include<stdio.h>
#include<ctype.h>
#include<time.h>


main()
{
    char iRandomNum = '[=10=]';

    int iResponse = 0;
    srand(time(NULL));

    iRandomNum = (rand() % 10) + 1;

    printf("Guess the number between 1 yand 10 : ");
    scanf("%d", &iResponse);

    if (isdigit(iResponse) == 0)
        printf("you did not choose a number\n");
    else if (iResponse == iRandomNum)
        printf("you guessed correctly\n");
    else 
        printf("you were wrong the number was %c", iRandomNum);
}

isdigit() 取一个字符的 ascii 值,如果它不是数字则 returns 0 如果是则为非 0

您传递给它的整数值不一定是 ascii 值,您不需要检查它是否是数字,因为您使用 scanf().

读取它

如果您想确保 scanf() 确实读取了一个数字,请检查 scanf() 的 return 值。

试试这个

if (scanf("%d", &iResponse) != 1)
    printf("you did not choose a number\n");

而不是 if (isdigit( ...

还有一点,main()必须returnint.