Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
家庭作业:C编程-结构和数组_C_Arrays_Structure - Fatal编程技术网

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

家庭作业:C编程-结构和数组,c,arrays,structure,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

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

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-id; char*fname; char*lname; int程序[x]; 国际实验室[x]; 智力测验[x]; 整数百分比; 双级; struct studentNode*下一步; }; 我的问题是,程序、实验室和考试的数组是从一个文件加载的,并且长度可变

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

我试着和指导老师一起检查,他告诉我用谷歌搜索一下(

到目前为止,我一点运气都没有,这超出了我们这本书所涵盖的范围


任何帮助都将不胜感激。

根据您的描述:

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


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

听起来好像所有学生都在使用相同的数组。您需要为每个学生分配一个单独的数组

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

int progs[Num_students][x];
在这种情况下,需要将每个studentNodes数组指向正确的数组(针对每个学生)

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

studentNode1.programs = progs[studentNumber];
studentNode1.programs = malloc(sizeof(int)*x);

确保每个
studentNode
不共享相同的
程序
实验室
等数组。除了创建
studentNode
,还必须在其中创建数组。

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


不要将数组存储在struc中,而是保留一个指向数组的指针。然后,在构建了结构外部的程序数组之后(必要时使用malloc)重新将node.program指针指定给该数组。

向我们显示一些您已经编写的代码。显示有问题,现在开始。当您说每当我更新数组时,您的确切意思是什么?我创建数组int分数[]={90,95,100},然后更新数组分数[0]=80…根据下面的答案,我认为我需要为它分配新内存。我相信讲师希望我们分配额外内存。我将尝试你的第二个建议。不要将malloc的返回值强制转换为C。这是不必要的,并且它可以使你可能希望看到的编译器警告静音。(polyglot C/C++代码中存在例外,其中需要强制转换。)