很抱歉,如果解决起来似乎很简单。但我真的很新C,并尝试了很多,但我无法弄清楚如何阻止扫描仪读取超过最大限制的整数。我有一个22个整数的文件,但我希望数组只存储文件中的20个整数。但它仍在阅读所有整数。任何小费对我来说都很有价值:/非常感谢
int *array = malloc(20* sizeof(int));
while(fscanf(fp,"%d",&array[i])!=EOF)
{
printf("%d\n",array[i]);
if(*array <= 20){
i++;
}
}
答案 0 :(得分:2)
当数组的第一个索引中的元素小于或等于20时,您拥有的代码将递增i。如果您的第一个数字(来自文件)小于或等于20,则可以使用此代码。
if(*array <= 20){
您应该执行以下操作
while(i < 20) {
if(fscanf(fp, "%d", &array[i]) != EOF) {
printf("%d\n",array[i]);
i++;
} else {
break;
}
}
可能稍后添加一些验证以确保您阅读了20个数字
if(i == 20) {
...
}
答案 1 :(得分:0)
在你的if:
之后else {
break;
}
答案 2 :(得分:0)
see this example 只需更改for循环的计数器,您就可以完成工作
答案 3 :(得分:-1)
尝试添加break语句以及system.out.println语句。
else
{
System.out.println("sorry!you are done");
break;
}
希望这有效!