Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在while循环中返回char*_C - Fatal编程技术网

在while循环中返回char*

在while循环中返回char*,c,C,我试图打印一个链表的内容,它是一个字符*但是while循环 你把代码搞乱了: 获取链接列表中下一项的函数: char * list_next(list *l) { list *currentPosition = NULL; currentPosition = l->next; //since the first node is a dummy value in the singly linked list while (currentPosition != NUL

我试图打印一个链表的内容,它是一个字符*但是while循环 你把代码搞乱了:

获取链接列表中下一项的函数:

char * list_next(list *l)
{
    list *currentPosition = NULL;
    currentPosition = l->next; //since the first node is a dummy value in the singly linked list

    while (currentPosition != NULL)
    {
        return currentPosition->charValue;
        currentPosition = currentPosition->next;
    }

    return NULL;
}
在我看来:

char * item;
while(item = list_next(list))
    printf("%s ",item);
有人能帮帮我吗?我很确定问题出在这段时间内
循环,但我似乎无法修复它

交换两行<代码>返回立即退出该功能。应该是

currentPosition = currentPosition->next;
return currentPosition->charValue;
相反


(更不用说其他人指出的许多其他错误了——由于范围混淆,无法实际更新
next
指针,在取消引用之前缺少对
NULL
的检查,等等)

交换这两行<代码>返回立即退出该功能。应该是

currentPosition = currentPosition->next;
return currentPosition->charValue;
相反


(更不用说其他人指出的许多其他错误——由于范围混淆,无法实际更新
下一个
指针,取消引用前缺少对
NULL
的检查,等等)

您的程序,即使返回位置已交换,也只会打印“第二个”每次通过时列表中的项-如果存在。您需要使用双指针来更新基值,或者想出更好的方法来迭代列表。

即使返回位置已交换,您的程序仍然只会每次通过打印列表中的“第二个”项(如果存在)。您需要使用双指针来更新基值,或者想出更好的方法来迭代列表。

将原始列表传递给list_next()。我相信你会永远打印循环中的第二项

我建议您可以简化如下:

char *item;
for (item=list->next; // Skip the first item as you said the first node is dummy.
     item != NULL; item=item->next) {
    printf("%s ",item->charValue);
} 

将原始列表传递给list_next()。我相信你会永远打印循环中的第二项

我建议您可以简化如下:

char *item;
for (item=list->next; // Skip the first item as you said the first node is dummy.
     item != NULL; item=item->next) {
    printf("%s ",item->charValue);
} 

您在评论中提到,您只需要返回链表中的所有值

function iterate(someNode)
   if someNode ≠ null
     node := someNode
     do
       do something with node.value [1]
       node := node.next
     while node ≠ someNode
由此。

现在您可以在代码中的位置[1]简单地
printf()
。但是,似乎必须返回所有值。
因此,您必须创建一个(可能是动态的)数组。

您在注释中提到,只需返回链接列表中的所有值即可

function iterate(someNode)
   if someNode ≠ null
     node := someNode
     do
       do something with node.value [1]
       node := node.next
     while node ≠ someNode
由此。

现在您可以在代码中的位置[1]简单地
printf()
。但是,似乎必须返回所有值。

因此,您必须创建一个(可能是动态的)数组。

请发布一个演示您的问题的最小程序。如果您在while循环中返回,为什么不使用
if
语句呢?我看到的另一个问题是,你的列表可能以一个伪值开始,但是你在整个列表中迭代你的主单元,因此只有一个伪值。如果l作为NULL传入,会发生什么?坏事。至少声明一下。@ComFreek我不能只使用if语句,因为我有多个具有char值的节点。我的问题基本上是如何在一个方法中返回超过1个字符*。请发布一个演示问题的最小程序。如果在while循环中返回,为什么不使用
if
语句?我看到的另一个问题是,你的列表可能以一个伪值开始,但是你在整个列表中迭代你的主单元,因此只有一个伪值。如果l作为NULL传入,会发生什么?坏事。至少声明一下。@ComFreek我不能只使用if语句,因为我有多个具有char值的节点。我的问题基本上是如何在一个方法中返回超过1个字符*。我刚刚在这个问题下写了一条评论,解释了OP在这里产生了一个逻辑错误。@ComFreek Yap。也许我应该指出这一点——然而,这并不能解决问题。列表中的一个值会永远循环下去。我刚刚在这个问题下写了一条评论,解释了OP在这里产生了一个逻辑错误。@ComFreek Yap。也许我应该指出这一点——然而,这并不能解决问题。列表中的一个值会永远循环下去,因为这真的像是一个家庭作业问题,我不愿意在这里输入实际代码来解决它……因此我为OP添加了一些提示;)嗯,请不要添加到我的帖子中。编辑是为了语法和格式,而不是为了添加我甚至不同意的想法…我为我的编辑感到抱歉。你是对的:这个问题不是一个社区维基。因为这感觉像是一个家庭作业问题,我不愿意在这里放实际的代码来解决它……因此我为OP添加了一些提示;)嗯,请不要添加到我的帖子中。编辑是为了语法和格式,而不是为了添加我甚至不同意的想法…我为我的编辑感到抱歉。你说得对:这个问题不是社区wiki。在list_next()方法中执行prinf不是问题问题问题是我需要返回链接列表中的所有char值在list_next()方法中执行prinf不是问题问题问题是我需要返回链接列表中的所有char值