我有这样的代码:
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)
应该反转我的数组。它只打印这个阵列,但不要反转它。
答案 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??^?