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

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

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

解题思路:
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;
}