c - 使用 Function 反转字符串并将整个字符串返回到主函数

标签 c string pointers reverse

我编写了以下代码片段,但它不起作用。 谁能帮我?我哪里错了??

char *xstrrev(char *string)
{
    int len=0,i=0;
    char *reverse;
    while(*string!='\0')
    {
        len++;
        string++;
    }
    len=len-1;
    while(len>=0)
    {
      *reverse=string[len];
       reverse++;
       len--;
    }
    *reverse='\0';
    return reverse; 
}

int main()
{
    char name[10];
    scanf("%s",name);
    printf("%s",xstrrev(name)); 
    return 0;
}

我无法在主函数中返回整个字符串

最佳答案

问题开始(和结束)于

  *reverse=string[len];

其中 reverse 未初始化。这会调用 undefined behavior .

您需要初始化reverse,使其指向有效内存位置,然后才能取消引用指针。

由于您希望从函数中返回新的字符串并在调用者中使用它,因此您应该使用内存分配器函数,例如 malloc()malloc() 调用成功检查后分配内存并使用返回的指针初始化reverse。使用完分配的内存后,您还需要处理free()

之后,根据您的逻辑,您将执行 reverse++;,最后,您将返回 reverse,因此请考虑确切的值:得到返回。您返回的是指向字符串结束的指针,而不是指向字符串开始的指针。您需要保留 reverse 实际开始的副本并将其返回。

关于c - 使用 Function 反转字符串并将整个字符串返回到主函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41328975/

相关文章:

c - libwnck 中的内存泄漏

c - 从 c 中的用户输入中读取 2 个整数

c - 管道与 printf 命令

c++ - 指针 vector 。如何使用?

c - 如何将数据从数组发送到指针变量并从指针变量返回到数组?

c++ - 在 C++ 中将指针值赋给变量的副作用

c - undefined symbol 链接器 turbo c

string - R中的算法/代码从字符串中的任何位置查找模式

string - 如何在 go 模板中连接两个字符串?

.net - 返回所有字符均为大写的字符串