[C语言]将一个字符串逆序

[C语言]将一个字符串逆序,第1张

逆序指得不是反向输出,而是将字符串中的字符存储位置前后对称的互换。


递归方法:

#include
void func(char* parr)
{
    int len = 0;//len记录字符串有几个字符
    while(*(parr + len) != '\0')
    {
        len++;
    }
    char tmp = *parr;//把最左边的字符存到临时变量中
    *parr = *(parr + len - 1);//用最右边的字符覆盖最左边的字符
    *(parr + len - 1) = '\0';//将最右边的字符赋值'\0',这样下一次调用func(parr+1)时,计算的len就会-2.
    if (len > 3)
    {
        func(parr + 1);
    }
    *(parr + len - 1) = tmp;//将tmp存的最左边的字符还回去
}
int main()
{
    char arr[10] = "abcdef";
    func(arr);
    printf("%s", arr);
    return 0;
}

非递归方法:

#include
void func(char* parr)
{
    int len = 0;
    while(*(parr + len) != '\0')//len记录字符串有几个字符
    {
        len++;
    }
    int left = 0;
    int right = len - 1;
    while (left < right)//*(parr+left)和*(parr+right)分别表示左右两边即将互换的两个字符
    {
        char tmp = *(parr + left);
        *(parr + left) = *(parr + right);
        *(parr + right) = tmp;
        left++;
        right--;
    }
}
int main()
{
    char arr[10] = "abcdef";
    func(arr);
    printf("%s", arr);
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/564275.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-03
下一篇2022-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存