2014-09-21 157 views
0

謝謝大家的反饋! 這是應用修復程序後的解決方案。功能只能工作一次 - C

typedef struct employeeData 
{ 
    //.... 
    char* Name[20]; //Char name needed to be defined size. Or use of Malloc in the functions 
    //... 
} employee; 

問題,即增加前頭部返回崩潰......你

if (addEMP_ID < head->EMP_ID) 
    { 
     current->next = head; 
     head = current; //Required for this scenario 
     return current; 
    } 
+0

接受解決問題的答案之一。 – 2014-09-21 21:37:13

+0

他們都做到了。我有兩個問題,他們每個都修好了。 – user2990336 2014-09-21 22:06:56

回答

0

的一個問題是你的employeeData結構。 名稱成員被定義爲一個指針(即沒有空間分配,只是指向內存分配的指針),但是您通過strcpy()將它填充到add()函數中。

你有兩個選擇,要麼改變名稱的結構的定義,有一個固定大小(如char Name[20];),或使用malloc()在你add()功能分配空間,然後的strcpy()。例如:

current->Name = malloc(strlen(addName)+1);  
strcpy(current->Name, addName); 

你當然會發出名成員的free()delete()功能。

1

首先,對不起我的英語不好。

我注意到一些問題,在這裏

if (addEMP_ID < head->EMP_ID) 
{ 
    current->next = head; 
    return current; 
} 

您需要頭的值更改爲當前或者數據丟失,因爲你從楦頭每次啓動。 所以這樣做

if (addEMP_ID < head->EMP_ID) 
{ 
    current->next = head; 
    head = current; 
    return current; 
} 

我也注意到你讀雙(工資)爲十進制整數。 什麼是temptr的葡萄牙語? 你也不需要投擲一個MALLOC!