谢谢大家的反馈! 这是应用修复后的解决方案。
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;
}
答案 0 :(得分:1)
首先,抱歉我的英语不好。
我注意到一些问题, 这里
if (addEMP_ID < head->EMP_ID)
{
current->next = head;
return current;
}
您需要将head的值更改为current,否则您的数据会丢失,因为您每次都从最后一个头开始。 这样做
if (addEMP_ID < head->EMP_ID)
{
current->next = head;
head = current;
return current;
}
我还注意到你读了一个double(Salary)作为十进制整数。 什么是temptr的porpuese? 你也不需要做一个MALLOC!
答案 1 :(得分:0)
您遇到的一个问题是您的employeeData
结构。
Name成员被定义为一个指针(即没有分配空间,只是一个指向内存分配位置的指针),然而你通过add()
在strcpy()
函数中填充它。
您有两种选择,要么更改结构的名称定义,要么具有固定大小(如char Name[20];
),要么使用malloc()
在add()
函数中分配空间,然后是strcpy()。例如:
current->Name = malloc(strlen(addName)+1);
strcpy(current->Name, addName);
您当然必须在free()
函数中发出delete()
名称成员。