函数包含一个循环,当输入包含非整数char时,该循环不起作用

时间:2013-11-25 16:36:37

标签: c

我的项目中有这个功能:

void inputIntArray(int array[], int size){
j = size;
for(i=0;i<j;i++){
    printf("* Enter number #%d out of %d: ",(i+1),j);
    scanf("%d",&k);
    array[i] = k;
    }
}

它应该填充数组,并在输入整数时正常工作, 当输入不是整数的东西时,它将填充输入的最后一个整数的数组中的剩余单元格,并跳过整个项目,同时只打印剩余的一切...

有谁知道导致此错误的原因是什么?谢谢!

修改 更改为:

之后
void inputIntArray(int array[], int size){
    int i = 0,j = 0,k = 0;
    j = size;
    for(i=0;i<j;i++){
        printf("* Enter number #%d out of %d: ",(i+1),j);
        if(scanf("%d",&k) != 1){
            break;
        }
        array[i] = k;
    }
}

我仍然遇到同样的错误......

4 个答案:

答案 0 :(得分:1)

如果使用非整数作为输入,您希望它做什么?它似乎不是跳过非整数输入的错误,而是正确的行为。如果您希望它继续工作,您需要通过检查用户输入的内容来处理该错误。如果输入不是程序所期望的,那么由编码人员解决,或者你会得到意想不到的行为。

答案 1 :(得分:1)

您的错误是array属于int类型的错误。如果你想要其他类型,你必须有一个这种类型的数组。

答案 2 :(得分:1)

您需要检查scanf()是否失败。如果是,则因为输入了无效数据,您必须刷新stdin缓冲区并再次重复scanf()

答案 3 :(得分:0)

格式说明符%d告诉scanf期望一个整数。参见例如here