2

我正在用 C 编写一个学生数据库,并定义了两个结构 Student 和 Course ,如下所示:

typedef struct student Student;
typedef struct course Course;

struct course
{
    char number[300];
    char title[300];
    char instructor[300];
    char days[10];
    char start[10];
    char end[10];
    char location[300];
};

struct student 
{
    char name[300];
    int age;
    Course course1;
    Course course2;
};

Student *Data[30];
Course *Courses[30];

我无法显示我创建的学生。我只想打印出名称、年龄和两门课程,但我无法通过学生访问课程结构的元素。

我试过这个:

printf("course1: %s\t%-40s%-30s\t%s\t%s-%s\t%s\n",
       Data[i]->course1.number,
       Data[i]->course1.title,
       Data[i]->course1.instructor,
       Data[i]->course1.days,
       Data[i]->course1.start,
       Data[i]->course1.end,
       Data[i]->course1.location);

但这当然行不通...

4

1 回答 1

2

我已将您的结构简化为一个教学示例。这可能有助于您了解如何访问数据。根据需要调整/扩展以满足您的需求。

typedef struct student Student;
typedef struct course Course;

struct course {
    char title[300];
};

struct student {
    char name[300];
    Course * course;  // pointer to a course
};

Student students[30]; // preallocate 30 students
Course  courses[30];  // preallocate 30 courses

测试人员:

void main(void) {

    // 1st course
    strcpy(courses[0].title,"C Language 101");

    // 1st Student
    strcpy(students[0].name,"Charles");

    // Assign 1st Student to course #1
    students[0].course = & courses[0];

    printf("Student 1: name=%s course=%s", students[0].name, students[0].course->title);

    return;
}

输出:

Student 1: name=Charles course=C Language 101
于 2013-03-19T02:59:37.477 回答