微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

阵列大小超出范围

如何解决阵列大小超出范围

我正在尝试编写代码,以XY的形式从FILE读取几对数字并将它们存储在两个数组中,并且我希望函数返回对数,我尝试使用包含5对的FILE ,但是FILE * ptr似乎超出了第六行,这是我的代码

#include<stdio.h>
#include<stdlib.h>

int main()
{  
   int X[100],Y[100];
   int i=0; int Ncouple = 0 ;int M = 5;

   FILE *fptr;
   fptr = fopen("num.data","r");
   
   if( fptr == NULL)
   {
    printf("fail");
    exit(1);
   }
   
   while(!feof(fptr))
   {
     fscanf(fptr,"%d %d",&X[i],&Y[i]);
     printf("\nX[%d] = %d Y[%d] = %d\n",i,X[i],Y[i]);
     i++;Ncouple++;
   }

   fclose(fptr);
   return 0;
}

当我执行时,我得到X [6]和Y [6],但是我的日期文件仅包含5行。我在哪里错了?

解决方法

while语句中的条件是您描述的行为的原因。

while(!feof(fptr))

在您已经尝试读取文件中不存在的记录之后,此条件将等于true。

像这样重写while循环

while( fscanf(fptr,"%d %d",&X[i],&Y[i]) == 2 )
{
    printf("\nX[%d] = %d Y[%d] = %d\n",i,X[i],Y[i]);
    i++;Ncouple++;
}

请注意而不是此声明行

int i=0; int Ncouple = 0 ;int M = 5;

最好写

int i=0; 
int Ncouple = 0;
int M = 5;

或至少喜欢

int i=0,Ncouple = 0,M = 5;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。