[英]Homework: C Programming - Structures and Arrays
我的作业需要使用以下链表结构:
struct studentNode { int id; char *fname; char *lname; int programs[x]; int labs[x]; int exams[x]; int percent; double grade; struct studentNode *next; };
我的问题是,程序,实验室和考试的数组是从文件加载的,并且是可变长度的。
我尝试使用指向数组的指针,但每当我为新学生更新数组时,它将替换链表中每个人的分数。
我已经尝试过与教练一起讨论这件事,他告诉我谷歌吧。 :(
到目前为止,我没有任何运气,这超出了我们的书所涵盖的范围。
任何帮助,将不胜感激。
根据你的描述:
您需要为数组中的每个项创建一个新对象。
所以首先你要创建一些东西来容纳第一个项目(比如指向第一个项目的指针)。 然后在加载每个项目时,创建新的studentNode,然后将其添加到数组中。
听起来你正在为所有学生使用相同的阵列。 您需要为每个学生分配一个单独的数组。
您可以在二维数组中静态分配固定数量的元素:
int progs[Num_students][x];
在这种情况下,您需要将每个studentNodes数组指向正确的数组(对于每个学生)。
studentNode1.programs = progs[studentNumber];
或者为每个学生在堆上分配一些内存。
studentNode1.programs = malloc(sizeof(int)*x);
确保每个studentNode
不共享相同的programs
, labs
等阵列。 除了创建studentNode
,还必须在其中创建数组。
我相信你的问题是指如何指定程序,实验室和考试数组的大小。
不要将数组存储在struc中,而是保持指向数组的指针。 然后,在您的结构之外构建程序数组之后(如果需要,使用malloc)将node.program指针重新分配给该数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.