创建一个反转字符数组中字符顺序的函数

问题描述 投票:0回答:2

我一直在努力理解指针。我的函数应该反转字符的顺序,因此如果 w 是绿色的,它将反转为 neerg。我的功能对我来说看起来很正确,但它没有交换字符。有人看出哪里出了问题吗?

void mirror(char *w){
    char *p=w;
    while(*p!='\0'){
        p++;
    }
    p--;
    while(*w!='\0'){
        char temp=*p;
        *p=*w;
        *w=temp;
        w++;
        p--;
}
}
c++ pointers char
2个回答
0
投票

while(*w!='\0') {

您不想等到字符串末尾,否则,您最终会交换所有字符两次。

这里有一个提示。当“w”领先于“p”时,您想中断。如果这不能让修复变得更加明显,请告诉我。

其他错误。空字符串的特殊情况是在进行指针数学和引用之前立即退出。


0
投票

您的代码中有一个问题。您的代码反转字符串,但最终结果保持不变,因为您的 w 指针移动到字符串长度的末尾,并且它使您的字符串相同。 所以解决方案是你应该改变第二个 while 条件:

while (w < p) 

现在它将反转你的字符串。

我已经在这种情况下运行了,结果是正确的。

参见:

© www.soinside.com 2019 - 2024. All rights reserved.