MaktubW 2022-12-11 16:48 采纳率: 100%
浏览 16
已结题

用递归返回反序字符串问题

问题遇到的现象和发生背景

编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值。
在main函数中输入一行字符串,分别调用两个函数,输出反序后的字符串。
上面是我的题目下面是我的代码

#include<stdio.h>
#include<string.h>

char *fanStr1(char str[],int length);   //递归函数令字符串反向输出
main(){
    char str[100];
    int length=0;       // 记录字符串长度
    char *str1,*str2;   //str1是常规函数返回,str2是递归函数返回
    int i=0;
    printf("请输入字符串:");
    scanf("%s", str);
    for(;str[length]!='\0';length++);
    length--;
    str2=fanStr1(str,length);
    for(;i<=length;i++){
        printf("%c", *(str2+i));
    }
}

char *fanStr1(char *str,int length){
    char str4[1000];    
    char *str3;
    //int i=1;
    str4[0]=str[length];
    if(length>0){
    str3=fanStr1(str,length--);
    strcat(str4,str3);
    }
    return str4;
}

img


然后程序运行不了我调试就遇到这种情况。是怎么回事

  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-11 17:28
    关注

    逆序是对字符的操作,strcat是连接2个字符串。

    
    char *fanStr2(char *str, char *str2)
    {
        char t, *s = str;
        if (str >= str2)
            return NULL;
    
        t = *str;
        *str = *str2;
        *str2 = t;
        fanStr2(++str, --str2);
        return s;
    }
    
    调用
    str2 = fanStr2(str, str + length);
    puts(str2);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数