我试图在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;
}
现在很无能为力。
答案 0 :(得分:2)
对于x = 0
,test[0]
和test[1]
进行了交换。此时,test = KO OK ..
。
对于x = 1
,test[1]
和test[2]
进行了交换。此时,test = K OOK ..
。
看到问题?
交换后,x
应提前 3 ,而不是1。 x += 3
代替x++
。
另请注意,使用数字15
和10
是任意的。此外,请注意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) {