gpt4 book ai didi

c - bool 方法的段错误 11

转载 作者:行者123 更新时间:2023-11-30 18:40:07 25 4
gpt4 key购买 nike

我正在尝试使用一种方法来返回 1(表示 true)和 0(表示 false),但如果返回 false,它会给出“段错误:11”。我一直在绞尽脑汁试图找出我哪里搞砸了,但我似乎找不到任何东西。

这是我的代码。

首先调用函数

int delete_number;
printf("Select a number to remove from list?\n");
scanf("%i", &delete_number);


if(remove_num(delete_number))
{
printf("Deleted %i ", delete_number);
}
else
{
printf("number %i not found in list", delete_number);
}

现在是函数本身

int remove_num(int data) 
{
int result = 0;
node *curr_ptr;
node *prev_ptr;
node *temp_ptr;

if(queuer.first != NULL)
{
if(queuer.first->data == data)
{
temp_ptr = queuer.first;
queuer.first = queuer.first->next;

if(queuer.first == NULL)
{
queuer.last = NULL;
}

free(temp_ptr);
result = 1;
}
else
{
prev_ptr = queuer.first;
curr_ptr = queuer.first->next;

while(curr_ptr->data != data && curr_ptr != NULL)
{
prev_ptr = curr_ptr;
curr_ptr = prev_ptr->next;
}

if(curr_ptr != NULL)
{
temp_ptr = curr_ptr;
prev_ptr->next = temp_ptr->next;

free(temp_ptr);
result = 1;
}
}
}

return result;
}

我可能误解了seg。错误,但我的想法是,发生这种情况是因为我如何使用 while 循环运行列表。正如我所说,当用户输入列表中存在的数字时,它工作正常。当输入的数字不在列表中时,就会发生段错误。

最佳答案

您需要更改:

        while(curr_ptr->data != data && curr_ptr != NULL)

至:

        while(curr_ptr != NULL && curr_ptr->data != data)

&& 中的测试是从左到右执行的。在验证 curr_ptr 有效之前,不得取消引用它。

关于c - bool 方法的段错误 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com