我的项目中有这个功能:
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;
}
}
我仍然遇到同样的错误......
答案 0 :(得分:1)
如果使用非整数作为输入,您希望它做什么?它似乎不是跳过非整数输入的错误,而是正确的行为。如果您希望它继续工作,您需要通过检查用户输入的内容来处理该错误。如果输入不是程序所期望的,那么由编码人员解决,或者你会得到意想不到的行为。
答案 1 :(得分:1)
您的错误是array
属于int
类型的错误。如果你想要其他类型,你必须有一个这种类型的数组。
答案 2 :(得分:1)
您需要检查scanf()
是否失败。如果是,则因为输入了无效数据,您必须刷新stdin
缓冲区并再次重复scanf()
。
答案 3 :(得分:0)
格式说明符%d告诉scanf期望一个整数。参见例如here