数组不能打印正确的值

前端之家收集整理的这篇文章主要介绍了数组不能打印正确的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从文本文件中读取数字并将其存储到数组中.
当我尝试读取数组中的数字时,输出略微偏离.
这是我的代码
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);
}

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

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

我得到的输出是这样的:

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

我做错了什么?

解决方法

问题是你的struct不够大,不能存储8个数字而且它正在调用 undefined behavior.你有两个x [7]但你循环到8.

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

猜你在找的C&C++相关文章