我們被要求用C編寫一定的方案,使用戶能夠如何在C中搜索結構中的成員並打印所有成員?
- 添加一個學生
- 查看所有的學生
- 搜索一個學生和出口
與結構的使用。該計劃應該像學生的門戶一樣行事。 我有這個'暫定代碼',當編譯時,會打印一個錯誤的分段錯誤(核心轉儲)。所以這是我的代碼怎麼一回事:
#include<stdio.h>
typedef struct tag1{
int day, year, month;
}Date;
typedef struct tag2{
int number;
char name[50];
char course[30];
Date birthday;
}Record;
main(){
int choice, n, i=0;
Record student[200];
//printing of menu:
printf("Choose from the menu:\n");
printf(" [1] Add Student\n");
printf(" [2] Search Student\n");
printf(" [3] View All\n");
printf(" [4] Exit\n");
scanf("%d", &choice);
if((choice>=1)&&(choice<=4)){
if(choice==1){
printf("Enter student number:\n");
scanf("%d", &student[n].number);
printf("Enter the name of the student:\n");
scanf("%[^\n]", student[n].name);
printf("Enter month of birth:\n");
scanf("%d", &student[n].birthday.month);
printf("Enter day of birth:\n");
scanf("%d", &student[n].birthday.day);
printf("Enter year of birth:\n");
scanf("%d", &student[n].birthday.year);
printf("Enter course:\n");
scanf("%[^\n]", student[n].course);
n++;
}
if(choice==2){
while(i<n){
printf("%d\n", student[n].number);
printf("%s", student[n].name);
printf("%d/%d/%d", student[n].birthday.month, student[n].birthday.day,student[n].birthday.year);
printf("%s", student[n].course);
i++;
}
}
}
}
我只是中途因爲我有我將如何爲學生尋找不知道。希望你對我有任何改進我的代碼的建議。
段錯誤發生在哪裏?你可以運行調試器來找出答案嗎? – Floris 2013-03-10 04:50:41