我是第一次在 C 语言中使用结构,我不想承认我认为我不太了解它。我正在尝试构建一个指向学生结构的指针数组,以创建一个完整的学生数据库。问题是,如果我创建了一个以上的学生,第一个学生的姓名和课程会被第二个学生覆盖。此外,仅 name 的输出真的很奇怪。如果我给“莎拉”这个名字,我会得到“莎拉?LG??fa?e”但是课程出来的很好。我觉得我的内存分配可能有问题?我们也只是倾向于这一点,我也不是 100% 理解它。
这是我现在正在处理的代码部分:
typedef struct student Student;
struct student
{
char *name;
int age;
char *course1;
char *course2;
};
Student *Data[30];
int count = 0;
void new()
{
int age;
char name [300];
char course1 [300];
char course2 [300];
char together[300];
char remarks[300];
printf("name: ");
scanf("%s", name);
printf("age: ");
scanf("%d", &age);
printf("course-1: ");
scanf("%s", course1);
printf("course-2: ");
scanf("%s", course2);
Data[count] = malloc(sizeof(Student));
Data[count]->name = name;
Data[count]->age = age;
Data[count]->course1 = course1;
Data[count]->course2 = course2;
count++;
}
void display()
{
int i;
for(i=0; i<count; i++)
{
printf("name:\t%s\n", Data[i]->name);
printf("age:\t%d\n", Data[i]->age);
printf("course1:\t%s\n", Data[i]->course1);
printf("course2:\t%s\n", Data[i]->course2);
}
}
谢谢大家的帮助 :)