函数只工作一次-C



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

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()

相关内容

  • 没有找到相关文章

最新更新