isDigit() 意外行为

isdigit() unexpected behaviour?

本文关键字:意外 isDigit      更新时间:2023-10-16

为什么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返回。

输入:

高度:福

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

你对函数isdigit的理解有误。 此函数的输入是字符。所以你可以改成这样:

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