加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组不能打印正确的值

发布时间:2020-12-16 03:34:56 所属栏目:百科 来源:网络整理
导读:我正在尝试从文本文件中读取数字并将其存储到数组中. 当我尝试读取数组中的数字时,输出略微偏离. 这是我的代码: 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; i
我正在尝试从文本文件中读取数字并将其存储到数组中.
当我尝试读取数组中的数字时,输出略微偏离.
这是我的代码:
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 %.2fn",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上重现它,我不确定.但那是你未定义的行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读