与for循环结合使用时,此代码的if部分无法正常运行。无论天气如何满足if语句,都不会执行printf命令。我试过实现while和for循环,没有运气。目的是用户输入仅包含数值的数组。 下面是我的C代码中有问题的部分。我已经学习了大约一个星期,所以请原谅我的无知:)。
int value;
int containsValues[5];
int x = 0;
int i = 0;
for (x<5;x++)
{
printf("Enter value: \n");
scanf("%d", &value);
if (isdigit(value))
printf("A numeric value must be entered\n");
else
containsValues[x] = value;
}
答案 0 :(得分:2)
isdigit(int c)
是数字字符(0-9),则{p> c
将返回true,如果c
是int
则不会返回。例如isdigit(48)
为真,因为ASCII码48指的是数字0
。但是isdigit(0)
将返回false。
答案 1 :(得分:2)
isdigit
采用int,但int(1)
不是char('1')
。
如果要测试是否实际读取了整数,请使用scanf
:
int value;
int containsValues[5];
int i = 0;
for (int x = 0; x< 5;) {
printf("Enter value: \n");
if (1 != scanf("%d", &value)) { // scan return number of value read.
printf("A numeric value must be entered\n");
} else {
containsValues[x] = value;
x++;
}
}