gpt4 book ai didi

c - 通过递归反转字符串中的单词

转载 作者:行者123 更新时间:2023-12-04 11:15:14 24 4
gpt4 key购买 nike

我正在尝试编写一个 C 函数,该函数接受一个字符串,并返回一个包含反转单词的新字符串。例如,输入“How are you”应该返回“you are How”。以下是我的试用:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *reverseWords(char *str, char *ac)
{
if (!ac)
{
ac = malloc(strlen(str) + 1);
ac[0] = '\0';
}

char *word = strtok(str, " ");
if (!word)
{
return ac;
}
reverseWords(NULL, ac);
strcat(ac, word);
//strcat(ac, " ");
}

int main()
{
char s[] = "How are you";
char *reversed = reverseWords(s, NULL);
printf("%s\n", reversed);
}

前面的代码打印:“youareHow”,所以看起来这个想法是正确的,只是缺少空格。如果我试图取消对函数最后一行的注释,我不会得到任何输出。那么发生了什么事?我不明白为什么它不起作用。

最佳答案

您忽略了 reverseWords 的返回值。我认为这没问题,因为您引用了 ac

reverseWords 函数的末尾,您不会返回包含连接字符串的 ac

现在您必须取消注释 strcat(ac, ""); 以便将空格添加到返回值。

现在返回值将是包含空格的反转字符串。

您忘记释放分配的字符串。

关于c - 通过递归反转字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58854584/

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