我在調試鏈接列表程序時遇到問題。它只是在前幾行後崩潰,我認爲這可能是一個scanf問題,然後再次檢查,但仍然無法運行。它在創建新節點的函數中間崩潰。這裏是函數的代碼和main。鏈接列表C程序錯誤
std* CreateNode()
{
std *newnd;
char nm[20];
double g;
printf("\nCreating node\n");
printf("\nEnter the student's name:\n");
scanf("%s", &nm);
printf ("\nEnter the student's GPA:\n");
scanf("%lf", &g);
strcpy((newnd->name), nm);
newnd->GPA = g;
newnd->next = NULL;
return newnd;
}
int main()
{
list_head = (std*) malloc(sizeof(std));
list_tail=(std*) malloc(sizeof(std));
list_tail=(std*) malloc(sizeof(std));
list_head=CreateNode();
A=CreateNode();
B=CreateNode();
C=CreateNode();
PrintList(list_head);
InsertBeg(A);
InsertEnd(B);
InsertMiddle(C);
PrintList(list_head);
SearchStudent();
DeleteMiddle();
DeleteEnd();
DeleteBeg();
PrintList(list_head);
return 0;
}
當我運行程序時,它會在我進入gpa後立即停止執行。
任何幫助將非常歡迎我試過了我能想到的一切。 謝謝! :)
更好:'std * newnd =(std *)malloc(sizeof(newnd));' – zentrunix
@JoséX。不要施放malloc的結果。 http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc – clcto
sizeof是一個運算符而不是函數。不需要父母 –