c - 为什么 isdigit 总是返回 false?

标签 c

我无法让 isdigit 工作。这是我的一些代码。

void input(int *array, int size) {
    int x;
    printf("Give me ten numbers. \n");
    for (int i = 0; i < size; i++) {
        do {
            printf("Array[%d]: ", i);
            scanf("%d", &x);
            scanf("%*[^\n]");
        } while (!isdigit(x));
        array[i] = x;
    }
}

这个程序的目的是用scanf(没问题)从键盘读取一个整数。如果输入不是数字,它应该重复 while 循环,直到用户给出一个数字。使用 isdigit,您应该能够识别字符是否为整数。如果是整数则返回 1,否则返回 0。至少,应该是这样。在此代码中,它始终返回 0。

最佳答案

我不明白你想做什么。首先,如果你需要一个字符的整数,你应该保留值“0”,这样

c-'0'.

然后而不是使用 scanf,如果你应该只得到一个更好的字符 getchar() 只是冲洗

 while(getchar()!='\n')
              ;

如果您不想使用正确的scanf("%d",&int_variable);,您必须构建一个函数来重建数字,这意味着获取字符,保留“0”并在后面的每个字符处乘以 10。

关于c - 为什么 isdigit 总是返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41142050/

相关文章:

encryption - 是什么导致 XOR 加密返回 "blank"?

c - 在 Visual Studio Code 中编译 C 程序时出错

c++ - 获取App路径,末尾不带应用名称

c - 函数接收 char * 就好像它是空的

c - 整数数组的动态内存分配

objective-c - 如何使用 ASN.1 x509 字节数组中的 RSA 公钥加密字符串?

c - 在有或没有 UNICODE 支持的情况下,如何在我的程序中使用 _stprintf?

c - 32位单元C编程语言的范围

c - Mosquitto Broker 正在接收部分数据

c - 为什么 __attribute__((constructor)) 在静态库中不起作用?