| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 369 人关注过本帖
标题:始终出现 segmentation fault, 不知道问题在哪? 求大神指教。
只看楼主 加入收藏
cevin880221
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-4-1
结帖率:100%
收藏
 问题点数:0 回复次数:3 
始终出现 segmentation fault, 不知道问题在哪? 求大神指教。
int main()
{
    FILE *fp;
    double d;
    double mean1;
    double mean2;
    double std1, std2;

    if((fp = fopen("Table_1.txt", "rb")) == NULL)
    {
        return -1;
    }
    while (fscanf(fp, "%lf", &d)==1)
    {
        Add(d);
    }
    fclose(fp);
----------读取文件结束后,开始计算2个数值,mean和std----------------//
    mean1 = count_mean(0);
    mean2 = count_mean(1);//这里获取的数值不知道为什么不正确,测试时候发现,计算不了文件第二行的第一个数字'15.0'

//---------------这里是我读取的表---------------------------------
160 591 114 229 230 270 128 1657 624 1503
15.0 69.9 6.5 22.4 28.4 65.9 19.4 198.7 38.8 138.2
//--------------------------------------------------------------
    std1 = count_std(mean1, 1);//segmentation就是报错这里,始终不知道问题是哪,并且计算出的结果也不对。
    std2 = count_std(mean2, 2);

    printf("Mean                         Std\n");
    printf("%lf                   %lf\n", mean1, mean2);
    printf("%lf                   %lf\n", mean2, std2);
   
    return 0;
}
//以下是我的计算std的方法
double count_std(double mean, int column)
{
   double std;
   int count = 0;
   double temp;
   if(column = 1)
   {
       Reverse();
       while(count < 10)
       {
            temp = temp + pow(mean - head -> data,2);
            //printf("%lf\n", temp);
            head = head -> next;
            count++;
       }
       std = sqrt(temp/9);
      
   }
   else
   {
       while(count < 10)
       {
            temp = temp + pow(mean - head -> data,2);
            head = head -> next;
            count++;
       }
       std = sqrt(temp/9);
   }
   return std;
}
//以下是我计算mean的方法
double count_mean(int k)
{
    double temp;
    int count;
    double mean;
    int len = 10;
    //
    if(k == 0)
    {
         Reverse();
         count = 0;
         while(count < 10)
         {
             temp = temp + head -> data;
             head = head -> next;
             count++;
         }
         mean = temp/len;
    }
    else if(k == 1)
    {
          count = 0;
          while(count < 10)
         {
             temp = temp + head -> data;
             head = head -> next;
             count++;
         }
         mean = temp/len;
    }
    return mean;
   
}

//---------这是一个链表结构的(double data, *next),添加方法---
void Add(double x)
{
    struct Node *temp = malloc(sizeof(struct Node));
    temp -> data = x;
    temp -> next = head;
    head = temp;
}

搜索更多相关主题的帖子: return double 
2015-04-01 18:58
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
我坐在沙发上看什么样的大神能拯救楼主发的这种代码……

Only the Code Tells the Truth             K.I.S.S
2015-04-01 20:52
cevin880221
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-4-1
收藏
得分:0 
汗~ 代码什么问题?
2015-04-01 21:04
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
你的链表添加有问题,按你的方式 始终只有两个节点组成循环链表  head和一个新建的temp;每次添加都会把以前动态分配的节点丢了,都找不到了,最后内存泄露,不出现段错误才怪
2015-04-01 21:35
快速回复:始终出现 segmentation fault, 不知道问题在哪? 求大神指教。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014933 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved