我想要做c中的人鏈接列表。 我的所有方法都在main()
中工作,直到我將它們放入while循環(用於從用戶讀取命令)。一切都編譯完成,但是當我嘗試運行它時,它會崩潰返回隨機值。 以下是我的部分代碼。在純c清單實施中需要幫助
結構:
struct Person{
const char* name;
const char* sex;
int age;
struct Person* next;
} *head;
方法Insert:
void insert(struct Person* h, char*n, char* s, int a){
for(; h->next != NULL; h=h->next){}
struct Person* p = (struct Person*) malloc(sizeof(struct Person));
p->name=n;
p->age=a;
p->sex=s;
p->next=NULL;
h->next=p;
}
,並主要在它不起作用:
int main()
{
struct Person Maciek={"Maciek", "Male", 20, NULL};
head = &Maciek;
int comand = 0;
while(comand != 6){
printf("Choose command:\n 1-insert person \n 2-delete by index \n 3-delete by name \n 4-display by index \n 5-print whole list \n 6-exit\n");
scanf("%d", &comand);
if(comand == 1){
printf("Name, Gender, Age\n");
char* name;
char* sex;
int age;
scanf("%s, %s, %d", &name, &sex, &age);
printf("Name %s, Sex %s, Age %d", name, sex, age);
insert(head, name, sex, age);
}
if(comand == 2){
printf("2\n");
}
if(comand == 3){
printf("3\n");
}
if(comand == 4){
printf("4\n");
}
if(comand == 5){
printf("5\n");
}
}
return 0;
}
我很新的C/C++,和我真的很感激任何幫助。
你試過調試器嗎?你不需要在C程序中輸入'malloc'的返回值。 –
打開警告設置 - 至少應該獲得格式不匹配警告。 –