在char数组中交换字符

时间:2016-04-20 18:36:19

标签: c++

我试图在char数组中交换我的字符,所以它们看起来像这样:KO KO KO KO KO但是,输出并不像我预期的那样:K OK OK OK OK

关于我做错了什么的任何线索?

#include <string>
#include <iostream>
using namespace std;

void swapIt (char &char1, char &char2) {
    char temp;
    temp = char1;
    char1 = char2;
    char2 = temp;
}

int main() {
    char test[15] = "OK OK OK OK OK";
    int x;
    for (x = 0; x < 10; x++) {
        swapIt(test[x], test[x+1]);
    }
    cout << test;
}

现在很无能为力。

2 个答案:

答案 0 :(得分:2)

对于x = 0test[0]test[1]进行了交换。此时,test = KO OK ..

对于x = 1test[1]test[2]进行了交换。此时,test = K OOK ..

看到问题?

交换后,x应提前 3 ,而不是1。 x += 3代替x++

另请注意,使用数字1510是任意的。此外,请注意x+1位置的字符需要在数组的范围内。我会试试

char test[] = "OK OK OK OK OK";
const int length = strlen(test);
for (int x = 0; x+1 < length; x += 3) {
    swapIt(test[x], test[x+1]);
}
cout << test;

答案 1 :(得分:1)

每个字都包含3个字符'O''K'' '。交换前两个后,你必须向前移动3个字符。

循环条件也不正确 - 10而不是字符串大小 - 15.正确的版本是:

for (x = 0; x < 15; x+=3) {