我想編寫簡單的程序來收集某些數量的學生的數據,並輸出到底。輸入一個學生的數據後,我的程序崩潰。簡單的指針結構
下面是代碼:
#include <stdio.h>
#include <stdlib.h>
typedef struct Student Student;
struct Student{
char name[20];
char lastname[20];
int age;
};
main() {
int i;
int n;
scanf("%d",&n);
Student *pStudents = NULL;
pStudents = (Student*)malloc(n*sizeof(Student));
for(i=0;i<n;i++) {
printf("Enter the students name: \n");
scanf("%s",(pStudents+i)->name);
printf("Enter lastname: \n");
scanf("%s",(pStudents+i)->lastname);
printf("Enter age: \n");
scanf("%d",(pStudents+i)->age);
}
for(i=0;i<n;i++) {
printf("%s",(pStudents+i)->name);
printf("%s",(pStudents+i)->lastname);
printf("%d",(pStudents+i)->age);
}
}
在此先感謝。
錯誤很明顯是scanf,但你爲什麼使用(pStudents + i)而不是pStudents [i]?它至少會表明pStudents是一個數組。 –
沒錯。我忘了指針和數組一樣。我仍然對指針不熟悉,但這確實使代碼更易於閱讀。 – Jay
將'NULL'賦值給'pStudents'它完全多餘; malloc()'覆蓋的返回值是立即的。 –