我无法让 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/