weixin_44141090
JokeL
采纳率0%
2019-03-02 10:27

利用指针写一函数,实现一长字符串中两短字符串交换,从主函数输入待替换的长字符串以及替换前后两个子串?

输入三个字符串。
我的思路是先进行识别,然后再进行交换。
现在能实现的是识别,但是交换却只能交换短字符串指针,而长字符串却并没有参与交换,
无法输出结果。
求大神帮忙!

如You and I. 最终输出 I and You.

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

1条回答

  • qq_36528114 清枫若待佳人醉 2年前

    解题思路:
    1. 翻转整个字符串 "I dna uoY"
    2. 依次按照空格,翻转每个单独的单词 "I and You"

    代码如下:

    #include <stdio.h>
    
    //将一个字符串进行逆置
    void Reverse(char* Begin,char* End)
     {
         if(NULL == Begin || NULL == End)
             return;
    
         while(Begin < End){
              char tmp = *Begin;
              *Begin = *End;
              *End   = tmp;
    
              Begin++;
              End--;
         }
     }
    
     char* ReverseSentence(char* Data)
     {
         if(NULL == Data)
             return NULL;
    
         char* Begin = Data;
         char* End = Data;
         while(*End != '\0')
             End++;
         End--;
    
         //反转整个句子
         Reverse(Begin,End);
    
         //反转句子中的每个单词
         Begin = End = Data;
         while(*Begin != '\0'){
             if(*Begin == ' '){
                 Begin++;
                 End++;
             }else if(*End == ' ' || *End == '\0'){
                 Reverse(Begin,End-1);
                 Begin = ++End;
             }else
                 End++;
         }
    
         return Data;
     }
    
    int main(){
        char str[20] = "You And I";
        ReverseSentence(str);
        printf("%s\n",str);
        return 0;
    }
    
    点赞 1 评论 复制链接分享

相关推荐