Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 使用字符的递归进行字符串反转*_Arrays_Pointers_Recursion_Char_Reverse - Fatal编程技术网

Arrays 使用字符的递归进行字符串反转*

Arrays 使用字符的递归进行字符串反转*,arrays,pointers,recursion,char,reverse,Arrays,Pointers,Recursion,Char,Reverse,我希望使用递归在适当的位置反转字符串。虽然这可能是重复的问题,但我不理解下面代码中的错误,我在这里提问之前搜索了答案 #include "Reversal.h" #include <iostream> #include <cstdlib> using namespace std; int size = 10; char* Reversal :: rever (char *str, int i, int j) { if (i>=j) ret

我希望使用递归在适当的位置反转字符串。虽然这可能是重复的问题,但我不理解下面代码中的错误,我在这里提问之前搜索了答案

#include "Reversal.h"
#include <iostream>
#include <cstdlib>

using namespace std;

int size = 10;
char* Reversal :: rever (char *str, int i, int j)
{
    if (i>=j)
        return str;
    char a;
    a = str[i];
    str[i] = str[j];
    str[j] = a;

    rever(str, i+1, j-1);
}

int main()
{
    Reversal obj;
    char *ptr = new char[size];
    char *reverse = new char[size];
    cout << " Enter a string \n";
    for (int i = 0; i < size-1; i++)
    {
        cin >> ptr[i];
    }

    reverse = obj.rever(ptr, 0, strlen(ptr)-1);

    for (int k = 0; k < strlen(reverse)-1; k++)
    {
        cout << reverse[k];
    }
    return 0;

}

这段代码有很多问题。您需要决定的第一件事是将输入字符串反转到位,还是返回指向新分配字符串的指针。因为看起来您计划填充第二个阵列,所以让我们继续:

void Reversal::rever(char* buf, char* str, int i, int j)
{
    if (i>=j)
    {
        buf[strlen(str)] = '\0';
        return;
    }
    buf[j] = str[i];
    buf[i] = str[j];

    rever(buf, str, i+1, j-1);
}
称为:

obj.rever(reverse, str, 0, strlen(str)-1);

注意,除非有其他原因,否则我不会把这一部分变成类(就像它是返回类中包含的代码< char *<代码>的相反),并且由于我们使用C++,我建议使用<代码> STD::String < /Cl> >代替“代码> char */COD>”。它是否正确地反转字符串??或者,其他错误是:“Reversion::~Reversion()”,引用自:_mainin reversion.o ld:symbol未找到体系结构x86_64 clang:Error:linker命令失败,退出代码为1(使用-v查看调用)make:**[String\u rever\u recurr]错误1我正在mac机器上使用eclipse这工作正常,但错误是:我没有定义构造函数和析构函数。我在.h文件中声明了,但忘了定义。我做到了,而且成功了。感谢您的整改:)

obj.rever(reverse, str, 0, strlen(str)-1);