2012-06-06 53 views
3

我有以下簡單的代碼,但它是拋出分段錯誤。有人可以指出我做錯了什麼嗎?在輸入第一個數字之後出現分段錯誤。分段錯誤實現鏈表

#include <stdio.h> 
    #include <stdlib.h> 

    struct linked_list { 
     int val; 
     struct linked_list *next; 
    } *curr, *head; 


    typedef struct linked_list list; 

    void createLinkedList(int num); 
    void main() { 
     int i; 

     head = NULL; 
     int num = 0; 
     for (i = 0; i < 10; i++) { 
      printf("Enter a number:"); 
      scanf("%d", num); 
      createLinkedList(num); 
     } 
     curr = head; 

     while(curr) { 
      printf("%d\n", curr->val); 
      head = curr->next; 
     } 

    } 

    void createLinkedList(int n) { 

      curr = (list *)malloc(sizeof(list)); 
      curr->val = n; 
      curr->next = head; 
      head = curr; 
    } 

謝謝。

+3

用途:scanf函數(「%d」,&num); –

+0

你應該讓編譯器警告然後,編譯器會警告你,你已經犯了錯...... –

回答

4

您正在閱讀num的錯誤。 scanf需要一個指向整數的指針,所以它試圖分配給內存地址0,這是無效的。使用&來引用num的內存位置。

這裏是一個修正版本:

scanf("%d", &num);