如何避免指针指向"\0"之后?

how to avoid the pointer, pointing after the ''?

本文关键字:之后 何避免 指针      更新时间:2023-10-16

这个函数的思想是交换单词的字母。它可以处理偶数个字母,但当它很奇怪时,它就不起作用了。我知道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;
}

请确保*a也不是''

#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;
}