gpt4 book ai didi

c - 将字符串 "Hello World"反转为 "World Hello",有什么问题吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:31 27 4
gpt4 key购买 nike

我正在尝试将“Hello World”变为“World Hello”。但是代码没有按照我希望的方式正常工作。请看下面的代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct llnode
{
char *info;
struct llnode *next;
};

typedef struct llnode NODE;

int main()
{
char msg[50],word[10],*str;
int i=0,length=0,j=0;
NODE *ptr,*front=NULL,*temp,*last=NULL;

//printf("Enter the sentence: ");
str= "Hello World"; //fgets(msg,sizeof(msg),stdin);

while(str[i]!='\0')
{
if((str[i]==' ')||(str[i]=='\n'))
{
word[j]='\0';
j=0;
ptr=(NODE *)malloc(sizeof(NODE));
ptr->info=word;
ptr->next=NULL;

if(front==NULL)
{
front=ptr; // only change the value of front here;
}
else
{
temp=front;
while((temp->next)!=NULL)
{
temp=temp->next;
}
temp->next=ptr;
}
printf("\n##%s\n",front->info); // prints thewords and not
//the first word
}
else
{
word[j]=str[i];
j++;
}
i++;
}

temp=front;
while(temp)
{
length++;
printf("%s ",temp->info);
temp=temp->next;
}
printf("\nLength of Linked List(or, number of words): %d\n",length);

i=0;
printf("\n************************\n");

while(i<length)
{
temp=front;
while(temp->next!=last)
{
temp=temp->next;
}
last=temp;
printf("%s ",temp->info);
i++;
}

return 0;
}

谢谢

最佳答案

代码有很多问题:

您正在使用单个单词数组来读取所有单词。因此,当您读取“Hello”时,您读入了单词数组,打印“##Hello”并将指向单词数组的指针存储为 front->info。然后,您用 World 覆盖单词数组。另外,请注意,您永远不要添加带有“World”一词的节点,因为一旦遇到“\0”就会退出循环。因此,您的链表仅包含一个节点。但是,有一个问题,因为你在第一个节点中存储了一个指向单词数组的指针,并且因为单词数组已经被“世界”覆盖,所以当你退出循环时,列表​​中只有一个节点和信息这个节点的是单词数组,它包含“World”而不是像以前那样包含“Hello”。所以,我想这可以解释输出?

关于c - 将字符串 "Hello World"反转为 "World Hello",有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123762/

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