首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调试以下函数(分段故障错误)

调试以下函数(分段故障错误)
EN

Stack Overflow用户
提问于 2017-04-17 06:04:51
回答 1查看 46关注 0票数 0

下列功能有什么问题吗?不知怎么的,他们制造了一个片段错误。

代码语言:javascript
运行
复制
struct processNode* create_node()
{
    struct processNode* newNode =  (struct processNode*)malloc(sizeof(struct processNode));
    newNode->next = NULL;
    return newNode;
}

struct processNode* append_node(struct processNode* list,struct processNode* newNode )
{
    struct processNode* tracker= NULL;
    tracker = list;

    if(tracker == NULL)
    {
        tracker = newNode;
    }
    else
    {
        while(tracker->next != NULL)
        {
            tracker =tracker->next;
        }
        tracker->next = newNode;
        tracker = tracker->next;
    }

    tracker->next=NULL;
    tracker = list;
    return tracker;
}

我正在用C创建一个shell,需要创建一个链接列表来解析来自用户的命令行。在第二个函数中,我打算返回一个带有新附加指针的新列表;

EN

回答 1

Stack Overflow用户

发布于 2017-04-17 06:11:47

以下情况将使您在在线tracker->next=NULL;中出现seg故障

  1. tracker != NULL && newNode == NULL
  2. tracker == NULL ……跟踪器=跟踪器->next;}//下一行将导致问题跟踪器->next=NULL;tracker = list;返回跟踪器;.}

你可以这样做:

代码语言:javascript
运行
复制
struct processNode* append_node(struct processNode* list,struct processNode* newNode )
{
    struct processNode* tracker= NULL;
    tracker = list;

     if(!newNode){
        //Do nothing 
     }          
    else if(tracker == NULL)
    {
        tracker = newNode;
    }
    else
    {
        while(tracker->next != NULL)
        {
            tracker = tracker->next;
        }
        tracker->next = newNode;
        tracker = tracker->next;
    }

    return tracker;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43446009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档