【问题标题】:Function works one time only - C功能只工作一次 - C
【发布时间】:2014-09-21 19:48:51
【问题描述】:

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

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 个问题,他们各自解决了一个问题。

标签: c list function hyperlink linked-list


【解决方案1】:

首先,对不起我的英语不好。

我注意到一些问题, 这里

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 的 porpuese 是什么? 你也不需要施放 MALLOC!

【讨论】:

    【解决方案2】:

    您遇到的一个问题是您的employeeData 结构。 Name 成员被定义为一个指针(即没有分配空间,只是一个指向内存分配位置的指针),但您正在通过 strcpy() 在您的 add() 函数中填充它。

    您有两个选择,要么更改结构的名称定义,使其具有固定大小(如char Name[20];),要么使用malloc()add() 函数中分配空间,然后使用strcpy()。例如:

    current->Name = malloc(strlen(addName)+1);    
    strcpy(current->Name, addName);
    

    您当然必须在 delete() 函数中发出 Name 成员的 free()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2021-11-17
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      相关资源
      最近更新 更多