正在交换字符数组中的字符

Swapping chars in char array

本文关键字:字符 数组 交换      更新时间:2023-10-16

我正在尝试交换字符数组中的字符,使它们看起来像这样: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;
}

现在太无知了。

对于x = 0,将交换test[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;

每个单词由3个字符'O''K'' '组成。交换前两个字符后,您必须向前移动3个字符。

此外,循环条件不正确-10,而不是字符串大小-15。正确的版本是:

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