我真不聪明 2021-09-21 04:00 采纳率: 100%
浏览 49
已结题

初学者请教一下关于C语言逆序字符串的问题

为什么显示Memory space at 0x1000b8(object 'p') is not initialized

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

void fun(char *str)

{
    char *p;
    int i=0;
    if(*str!='\0'){
        fun(str+1);
        *p=*str;
    }
    for(i=0;i<strlen(str)-1;i++){
        str[i]=p[i];
    }
}

int main()
{
    char *a="abcdefg";
    fun(a);
    printf("%s\n",a);
}


  • 写回答

3条回答 默认 最新

  • qzjhjxj 2021-09-21 11:17
    关注

    修改如下,供参考:

    #include <stdio.h>
    #include <string.h>
    
    void fun(char* str)
    {
        char* p = str, c;
        while (*p) p++;
        p--;
        if (str < p) {
            c = *str;
            *str = *p;
            *p = '\0';
            fun(str + 1);
            *p = c;
        }
    }
    int main()
    {
        char a[] = "abcdefg";//char *a = "abcdefg";
        fun(a);
        printf("%s\n", a);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 已采纳回答 9月21日
  • 创建了问题 9月21日

悬赏问题

  • ¥50 adb连接不到手机是怎么回事?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目