我的方法不会反转字符数组

时间:2014-04-07 22:16:13

标签: c++ arrays recursion

我有这样的代码:

char* insert(int b, char a[],char c){

    //b - index of array a, c - character

    cin >> c;
    a[b] = c;
    b++;

    if(c == '.'){
        for(int i = b-1;i==0;i--)
        cout << a[i];
        return a;
    } 
    else if(c != '.') return insert(b, a,c); 

}

int main(){
    char znak = 0;
    char name[100];
    int licznik = 0;
    cout << insert(licznik, name, znak) << endl;
}

如果我输入句点,方法insert(int b, char a[],char c)应该反转我的数组。它只打印这个阵列,但不要反转它。

1 个答案:

答案 0 :(得分:1)

C ++中的for循环就像一个带有初始化stmt,迭代器和条件的while循环,所以这个

for (int i=b-1; i==0; i--) {
    . . .
}

相当于

int i=b-1;
while (i==0) {
    . . .;
    i--
}

在这种形式中,您会看到执行循环体的唯一时间是i为0时,然后它只执行一次。您可能想要的是

for (int i=b-1; i>0; i--)

但请注意,由于您返回字符串并立即打印它,您将获得正向版本连接到后向版本。此外,由于您录制了&#39;。&#39;在检查之前,它将成为字符串的一部分。最后,由于你没有正确地终止字符串(使用null),当你在结尾打印它时,你可能会在它的末尾获得随机垃圾。因此,如果您运行该程序并输入&#34; abcd。&#34;作为输入,你可能得到这样的输出:

.dcbabcd.0??^?