作业:C编程 - 结构和数组

时间:2011-03-06 19:08:31

标签: c arrays structure

我的作业需要使用以下链表结构:

      struct studentNode {
        int     id;
        char    *fname;
        char    *lname;
        int     programs[x];
        int     labs[x];
        int     exams[x];
        int     percent;
        double  grade;

        struct  studentNode *next;
      };

我的问题是,程序,实验室和考试的数组是从文件加载的,并且是可变长度的。

我尝试使用指向数组的指针,但每当我为新学生更新数组时,它都会替换链表中每个人的分数。

我已经尝试过与教练一起讨论这个问题,他告诉我谷歌。 :(

到目前为止,我没有任何运气,这超出了我们的书所涵盖的范围。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:2)

根据你的描述:

您需要为数组中的每个项目创建一个新对象。

所以首先要创建一些东西来容纳第一个项目(比如指向第一个项目的指针)。然后在加载每个项目时,创建新的studentNode,然后将其添加到数组中。

答案 1 :(得分:0)

听起来你正在为所有学生使用相同的阵列。您需要为每个学生分配一个单独的数组。

您可以在二维数组中静态分配固定数量的元素:

int progs[Num_students][x];

在这种情况下,您需要将每个studentNodes数组指向正确的数组(对于每个学生)。

studentNode1.programs = progs[studentNumber];

或者为每个学生在堆上分配一些内存。

studentNode1.programs = malloc(sizeof(int)*x);

答案 2 :(得分:0)

确保每个studentNode不共享相同的programslabs等数组。除了创建studentNode之外,还必须在其中创建数组。

答案 3 :(得分:0)

我相信你的问题是指如何指定程序,实验室和考试数组的大小。

不要将数组存储在struc中,而是保持指向数组的指针。然后,在构造之外构建程序数组之后(如果需要,使用malloc)将node.program指针重新分配给该数组。

相关问题