我第一次使用C中的結構,並且我討厭承認我不認爲我很好地理解它。我正在嘗試構建一個指向Student結構的指針數組,以創建學生的整個數據庫。問題是,如果我創造了多於一名學生,那麼第一批學生的名字和課程會被第二名學生覆蓋。此外,名稱上的輸出只是非常奇怪。如果我給「Sarah」這個名字,我會回到「Sara?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);
}
}
感謝您的幫助大家:)