在While循环中使用If语句时出现问题

时间:2016-03-08 12:02:34

标签: c arrays if-statement while-loop

与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;
}

2 个答案:

答案 0 :(得分:2)

如果isdigit(int c)是数字字符(0-9),则{p> c将返回true,如果cint则不会返回。例如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++;
  }
}