如何在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() 函数并以错误的顺序给出参数的错误。
我有这样的结构:
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() 函数并以错误的顺序给出参数的错误。