2014-09-21 136 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!