| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2866 人关注过本帖
标题:结构体数组的指针传递(在同一个工程的不同文件中)
只看楼主 加入收藏
邪七
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
结构体数组的指针传递(在同一个工程的不同文件中)
在一个子函数的文件中我进行输入
#include <stdio.h>

#define N 100
struct STUDENT
{
    long long stu_ID;
    char stu_name[10];
    float score;
}student[N], *stu;

void grade_add(int num)
{
    int i;
    printf("请输入%d个学生的学号,姓名,成绩:\n",num);
    for(i = 0; i < num; i++)
    {
        scanf("%lld%s%f",&student[i].stu_ID,&student[i].stu_name,&student[i].score);
    }
     stu = student;
    printf("成绩录入已完成!\n");
/*   for(i=0; i<n; i++)
    {
        printf("%lld %s %.1f\n",(stu+i)->stu_ID,(stu+i)->stu_name,(stu+i)->score);
    }
*/
   return &stu;
}然后返回结构体的首地址
然后再在主函数的文件中接收

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include "chose.h"//头函数的 .h 文件

void yesorno();

void meun()
{
    int n, m, *stu;
    printf (" 1:学生成绩新增\n 2:学生成绩查询\n 3:学生成绩修改\n 4:学生成绩删除\n 5:学生成绩全览\n\
 6:班级成绩统记\n 0:退出\n");//菜单子函数
    printf("请输入你选择的选项n:\n");
    scanf ("%d",&n);
    while(n != 0)//判断是否想退出
    {
        switch(n)
        {
        case 1:
            printf("********成绩新增*********\n");
            printf ("请输入班级人数:");
            scanf("%d",&m);
           stu = grade_add(m);//得到地址
            break;
        case 2:
            score_inquiry(stu,m);//成绩查询,在这个子函数中调用那个地址
            break;
        case 3:
            printf ("学生成绩修改待完成\n\n");
            break;
        case 4:
            grade_delete();//学生成绩删除子函数
            break;
        case 5:
            grade_all();//学生成绩全览子函数
            break;
        case 6:
            printf ("班级成绩统计待完成\n\n");
            break;
        default:
            printf ("input error!\n");
        }
       meun();
    }
    yesorno();
}


void yesorno()//退出程序
{
    char ch;
      printf ("确定退出系统?(Y/N)\n");
    getchar();
    ch  = getchar();
    if(ch == 'Y'|| ch == 'y')
        {
            printf ("OVER!\n");
            exit(0);
            }
    else if (ch == 'N' || ch == 'n')
        meun();
}

调用的函数

#include <stdio.h>

void score_inquiry(const struct STUDENT *Stu,int num)
{
     //printf ("学生成绩查询待完成\n\n");
     int i;
      for(i=0; i<num; i++)
    {
        printf("%lld %s %.1f\n",Stu[i].stu_ID, Stu[i].stu_name, Stu[i].score);
    }
}
然后就报错了






搜索更多相关主题的帖子: stu STUDENT printf 学生 成绩 
2017-12-12 23:33
邪七
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-16
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

这是报错的图片了


感谢帮忙!!!
2017-12-12 23:34
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:10 
粗略看来一下,你没有包含含有结构体那个源文件,用include引入就可以了
2017-12-12 23:46
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:10 
你传入的参数student是指针,访问用箭头->
2017-12-12 23:49
快速回复:结构体数组的指针传递(在同一个工程的不同文件中)
数据加载中...
 
   



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

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