【C语言】用递归实现字符串逆序的曲折之路

本文通过两个C语言示例展示了如何使用递归函数反转字符串。首先给出一个成功的实现案例,并对其进行了详细解释。随后通过一个错误的尝试揭示了前置递增操作符在递归调用中的不当用法及可能的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看一下简洁版的。
1.成功版

#include<stdio.h>  
#include<windows.h>
char s[1000];
void reverse(char *s)
{

    if (*s)
    {
        reverse(s+1);
        printf("%c", *s);
    }
    return;     
}

int main()
{
    gets_s(s, 100);
    reverse(s);
    printf("\n");

    system("pause");
    return 0;
}

错误案例1.
这里写图片描述
输出:
这里写图片描述

错误案例2.
那++前置怎么样呢?

#include<stdio.h>  
#include<windows.h>
char s[1000];
void reverse(char *s)
{

    if (*s)
    {
        reverse(++s);
        printf("%c", *s);
    }
    return;     
}

int main()
{
    gets_s(s, 100);
    reverse(s);
    printf("\n");

    system("pause");
    return 0;
}

这里写图片描述

总结:
1.++s 与s++ 不行
原因还不清楚,反思一下,不知道谁可以解决,共同进步?

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值