weixin_44585751
weixin_44585751
采纳率35.3%
2020-06-26 09:45

要求使用C语言,将一个字符串逆序,以下是我的代码,一直编译不出结果,哪位大佬帮个忙,谢谢啦

要求使用C语言,将一个字符串逆序,以下是我的代码,一直编译不出结果,哪位大佬帮个忙,谢谢啦

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

 char * Reverse_Order(const char *str);
 int main(int argc,const char* argv[])
 {
     char *str = "hello";
     printf("逆序后为:%s\n", Reverse_Order(str));
     free(Reverse_Order(str));
     return 0;
 }   


 char * Reverse_Order(const char *str)
 {
     char *Reverse = NULL;
     Reverse = (char *)malloc(10);
     int num = 0;
     while(*str != '\0')
     {
         str += 1; 
         num++;
     }   

     while(*str != '\0')
     {
         int i=0;
         Reverse[i++] = str[num--];
     }   
     return Reverse;
 }   

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • qq_20677505 qq_20677505 9月前

    1楼回复的代码有个bug,

    Reverse[i++] = str1[num-i-1];
    需要修改为
    Reverse[i] = str1[num-i-1];
    i++;

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 9月前

    问题解决的话,请点下采纳

    #include <stdio.h>                                             
    #include <stdlib.h>
    #include <string.h>
    
    char * Reverse_Order(const char *str);
    int main(int argc,const char* argv[])
    {
        char str[] = "hello";
        char *  p  = Reverse_Order(str);
        printf("逆序后为:%s\n", p);
        free(p);
        return 0;
    }   
    
    
    char * Reverse_Order(const char *str)
    {
        char *Reverse = NULL;
        const char *str1 = str;
        Reverse = (char *)malloc(10);
        int num = 0;
        while((*str) != '\0')
        {
            str += 1; 
            num++;
        }   
        int i = 0;
        while(i < num)
        {
            Reverse[i++] = str1[num-i-1];
        } 
        Reverse[i] = '\0';
        return Reverse;
    }   
    
    点赞 评论 复制链接分享

为你推荐