c++ - isdigit() 意外行为?

标签 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

最佳答案

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

关于c++ - isdigit() 意外行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21655826/

相关文章:

c++ - 免费(指针)方法的性能?

c++ - mmap 与/dev/输入/事件*

c - 从文件中读取 7 个变量(每个变量 1 行)并分配给结构变量

c - 如果一个二进制文件的内容出现在另一个二进制文件中,如何在 C 中搜索?

c++ - 我如何要求 GCC 使用不同的标准库?

c++ - 嵌套类成员函数不能访问封闭类的函数。为什么?

c++ - I/O 流标志如何工作?

c - 将结构体转换为 int 类型

c - 不包含具有结构定义的头文件可以吗?

c - GCC 不工作但 G++ 可以