感谢大家的反馈!以下是应用修复后的解决方案。
typedef struct employeeData
{
//....
char* Name[20]; //Char name needed to be defined size. Or use of Malloc in the functions
//...
} employee;
在head之前添加返回崩溃的问题。。。
if (addEMP_ID < head->EMP_ID)
{
current->next = head;
head = current; //Required for this scenario
return current;
}
首先,对不起我的英语不好。
我注意到一些问题,此处
if (addEMP_ID < head->EMP_ID)
{
current->next = head;
return current;
}
您需要将head的值更改为current,否则数据将丢失,因为每次都是从最后一个head开始。所以做一些类似的事情
if (addEMP_ID < head->EMP_ID)
{
current->next = head;
head = current;
return current;
}
我还注意到,您将双精度(薪水)读取为十进制整数。temptr的作用是什么?你也不需要铸造一个MALLOC!
您面临的一个问题是employeeData
结构。Name成员被定义为一个指针(即没有分配空间,只是一个指向内存分配位置的指针),但您正在通过strcpy()
在add()
函数中填充它。
您有两种选择,一种是更改结构的Name定义,使其具有固定大小(如char Name[20];
),另一种是使用malloc()
在add()
函数中分配空间,然后使用strcpy()。例如:
current->Name = malloc(strlen(addName)+1);
strcpy(current->Name, addName);
当然,您必须在delete()
函数中发布Name成员的free()
。