功能仅工作一次 - C

时间:2014-09-21 19:48:52

标签: c list function hyperlink linked-list

谢谢大家的反馈! 这是应用修复后的解决方案。

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;
    }

2 个答案:

答案 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()名称成员。