isdigit()意外行为?

时间:2014-02-09 05:48:14

标签: c++ c

为什么isdigit无法按预期工作。我试图检查输入是否是一个数字。如果输入为数字,则打印True否则False

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

int main()
{
    int h;
    printf("Height: ");
    scanf("%d", &h);
    if (isdigit(h))
        printf("True");
    else
        printf("False");
}

但它总是返回False

输入:

身高:Foo

2 个答案:

答案 0 :(得分:5)

因为您的期望不正确。在字符上调用isdigit()以查看它是否包含十进制数字,'0' - '9'。你在一个已经是二进制值的int上调用它。

答案 1 :(得分:1)

您对函数isdigit的理解有误。这个函数的输入是char。 所以你可以改为:

char h;
printf("Height: ");
scanf("%c", &h);