如何在最大数字后停止文件扫描程序读取整数

时间:2014-09-29 19:27:37

标签: c

很抱歉,如果解决起来似乎很简单。但我真的很新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++;
    }
}

4 个答案:

答案 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;
  }

希望这有效!