| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 535 人关注过本帖, 1 人收藏
标题:结构体调用问题。怎么给name
只看楼主 加入收藏
shuda333
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-7-30
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:2 
结构体调用问题。怎么给name
多重结构体调用,怎么开name的空间啊,坐等解答。。
x个学校 每个学校y个班级 每个班机z个学生
    计算每个学校每个班级的平均成绩及每个学校的平均成绩
    typedef struct school
    {
        sStuCla *stu_cla;
   
    }sStuSch,*pStuSch;

    typedef struct class
    {
        sStu *stu_stu;
    }sStuCla,*pStuCla;

    typedef struct student
    {
        char *name;
        int score;
    }sStu,*pStu;



我的程序刚写到开name的空间就段错误了
    #include <stdio.h>
   #include <stdlib.h>
   typedef struct student
   {
       char *name;
       int score;
   }sStu,*pStu;
   
   typedef struct class
  {
      sStu *stu_stu;
  }sStuCla,*pStuCla;
  
  typedef struct school
  {
      sStuCla *stu_cla;
  }sStuSch,*pStuSch;
  
  void my_malloc(void **p,int size)
  {
      *p=malloc(size);
      if(*p==NULL)
      {
          printf("malloc error\n");
          exit(-1);
      }
  }
     int main()
  {
      sStuSch *stu_sch;
      sStuCla *stu_cla;
      sStu *stu_stu;
      int x,y,z;
      int i,j,h;
      printf("input x,y,z:\n");
      scanf("%d%d%d",&x,&y,&z);
     int count_class[x*y],count_school[x];
      my_malloc((void **)&stu_sch,x*sizeof(sStuSch));
      my_malloc((void **)&stu_cla,x*y*sizeof(sStuCla));
      my_malloc((void **)&stu_stu,x*y*z*sizeof(sStu));
      printf("%p\t%p\t%p\n",stu_sch,stu_cla,stu_stu);
      for(i=0;i<x;i++)
      {
          for(j=0;j<y;j++)
          {
              for(h=0;h<z;h++)
              {
                  printf("input student name,score\n");
                  printf("+++++++++++++++++++++++++++\n");
                  my_malloc((void **)&(stu_sch[i].stu_cla[j].stu_stu[h].name),20);
                  printf("------------------------\n");
                  scanf("%s%d",stu_sch[i].stu_cla[j].stu_stu[h].name,
                          &stu_sch[i].stu_cla[j].stu_stu[h].score);
              }
          }
      }
  
      for(i=0;i<x;i++)
      {
          for(j=0;j<y;j++)
          {
             for(h=0;h<z;h++)
              {
             printf("%s\t%d\n",stu_sch[i].stu_cla[j].stu_stu[h].name,
            stu_sch[i].stu_cla[j].stu_stu[h].score);
             }
  
         }
      }
      return 0;
  }

搜索更多相关主题的帖子: 空间 结构体 school include 
2013-08-10 10:47
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:10 
结构体的嵌套,书上有,看书

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-08-10 11:12
XiaoXiao_Ren
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
威 望:1
帖 子:80
专家分:198
注 册:2013-7-17
收藏
得分:10 
回复 楼主 shuda333
my_malloc((void **)&stu_sch,x*sizeof(sStuSch));
      my_malloc((void **)&stu_cla,x*y*sizeof(sStuCla));
      my_malloc((void **)&stu_stu,x*y*z*sizeof(sStu));
      printf("%p\t%p\t%p\n",stu_sch,stu_cla,stu_stu);

      stu_cla->stu_stu=stu_stu;   //需要指明结构体里面的指针指向哪里
      stu_sch->stu_cla=stu_cla;   //所以需要添加这两行
     
      for(i=0;i<x;i++)

否极泰来
2013-08-10 15:10
快速回复:结构体调用问题。怎么给name
数据加载中...
 
   



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

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