我正在尝试编写代码,以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],i,Y[i]);
i++;Ncouple++;
}
fclose(fptr);
return 0;
}
当我执行时,我得到X [6]和Y [6],但是我的日期文件仅包含5行。我在哪里错了?
答案 0 :(得分:3)
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],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;