如何在C中的结构数组中存储值

How to store value in an array of a struct in C

我有这样的结构:

struct student {
    
    char name[50];
    int grade;
};

我想创建一个结构数组(每个学生一个,使用 malloc)。

 struct student *studs=malloc(STUDENT_NUM*sizeof(struct student));

之后,我遍历了包含学生信息的数组,然后尝试将这些信息存储在每个 struct.So 中,但我遇到了分段错误,但我不明白为什么。

for(int i=0;i<STUDENT_NUM;i++){
        strcpy(Names[i],studs[i].name);
        studs[i].grade=Grades[i];
}

我找到了另一种有效的方法,但我只是想知道如何使用上面的结构让它工作。

所以我找到的“解决方案实际上是,将结构字段更改为:

char *name;

然后在循环中,我只是像这样为该数组分配 space:

studs[i].name=malloc(50*sizeof(char));

为什么我的第一种方法给我分段 fault.Havent 我使用该初始化分配了内存 char name[50];? **还要注意,我只是在学习 C(如果不是很明显的话)。 提前谢谢你。

所以我只是 运行 我的代码,正如 kaylum 评论的那样。错误不在我正在寻找的地方 for.It 只是我忽略了 strcpy() 函数并以错误的顺序给出参数的错误。