数组不能打印正确的值

Cod*_*der 6 c arrays

我正在尝试从文本文件中读取数字并将其存储到数组中.当我尝试读取数组中的数字时,输出略微偏离.这是我的代码:

struct point{
    double x[7];
    double y[7];
}point;

int main()
{
    FILE *fp;
    fp = fopen("data_2.txt", "r");
    struct point points;
    int len = 8;
    int i = 0;
    int j = 0;
    int k = 0;
    double a = 0;
    double b = 0;
    double c = 0;
    double total = 0;
    int left=0;
    int right=0;
    int line = 0;
    for (i=0;i<len;i++)
    {
        fscanf(fp, "%lf %lf", &points.x[i],&points.y[i]);
    }
    for(i = 0; i < len;i++)
        printf("looking at point %.2f %.2f\n",points.x[i],points.y[i]);

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

我使用的测试文件包含以下数字

  2.3  7.5
  7.6  7.1
  8.5  3.0
  5.9  0.7
  1.0  2.0 
  5.1  5.8
  4.0  4.5 
  4.3  3.4
Run Code Online (Sandbox Code Playgroud)

我得到的输出是这样的:

looking at point 2.30 4.30
looking at point 7.60 7.10
looking at point 8.50 3.00
looking at point 5.90 0.70
looking at point 1.00 2.00
looking at point 5.10 5.80 
looking at point 4.00 4.50
looking at point 4.30 3.40
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Sch*_*ern 7

问题是你的struct不够大,不能存储8个数字,而是调用未定义的行为.你有,double x[7]但你循环到8.

为什么你会得到那个特定的行为,我可以在OS X上重现它,我不确定.但那是你未定义的行为.