我是一名C初學者,已經搜索了所有問題並嘗試了相關答案,但似乎沒有任何工作。 它讀取姓名和UUN,然後說分段錯誤:11並退出。 請幫忙!分段錯誤:使用scanf時爲11。不會讀過UUN?
typedef struct {
char *name;
char *surname;
char *UUN;
char *department;
char gender;
int age;
} student_t;
int main(void) {
int i, len;
student_t student_t[6];
student_t[0].name = "John";
student_t[0].surname = "Bishop";
student_t[0].UUN = "s1234";
student_t[0].department = "Inf";
student_t[0].gender = 'm';
student_t[0].age = 18;
student_t[1].name = "Lady";
student_t[1].surname = "Cook";
student_t[1].UUN = "s2345";
student_t[1].department = "Eng";
student_t[1].gender = 'f';
student_t[1].age = 21;
student_t[2].name = "James";
student_t[2].surname = "Jackson";
student_t[2].UUN = "s3456";
student_t[2].department = "Eng";
student_t[2].gender = 'm';
student_t[2].age = 17;
for (i = 3; i < 6; i++) {
printf("Enter your name: ");
scanf(" %s", student_t[i].name);
printf("Enter your surname: ");
scanf(" %s", student_t[i].surname);
printf("Enter your UUN: ");
scanf(" %s", student_t[i].UUN);
printf("Enter your department: ");
scanf(" %s", student_t[i].department);
printf("Enter your gender: ");
scanf(" %c", &student_t[i].gender);
printf("Enter your age: ");
scanf(" %d", &student_t[i].age);
}
return EXIT_SUCCESS;
}
你從來沒有爲字符串分配內存,所以你通過未初始化的指針寫入內存。 – Barmar
..以及:'for(i = 4; i <= 6; i ++)'以及所有的[1],[2],[3]都表明OP不知道數組索引從0開始,所以'student_t student_t [6];',索引0,1,2,3,4,5都是有效的。 6不是。 –
即使第一個塊由於加載指向字符串文字的指針而運行正常,將前三個視爲與最後三個不同也是不好的主意。 OP應該爲這兩個塊的數據分配空間和strcpy。 –