这个功能的想法是交换一个单词的字母。它适用于偶数量的字母,但是当它很奇怪时,却没有。我知道mix(a + 2)给出了一个在'\ 0'之后的值,这就是为什么它在输出后输出一些随机数。我如何修改我的if语句,以便我可以避免这个问题?抱歉这个愚蠢的问题,但我还是编程的新手。
#include <iostream>
using namespace std;
void mix(char* a) {
if (*(a+1)) {
char temp = *a;
*a=*(a+1);
*(a+1)=temp;
mix(a+2);
}
}
int main() {
char a[] = "angela";
mix(a);
cout << a;
}
答案 0 :(得分:3)
请确保*a
也不是'\0'
。
#include <iostream>
using namespace std;
void mix(char* a){
if (*a && *(a+1)) {
char temp = *a;
*a=*(a+1);
*(a+1)=temp;
mix(a+2);
}
}
int main()
{
char a[] = "angela";
mix(a);
cout << a;
return 0;
}