JokeL 2019-03-02 10:27 采纳率: 0%
浏览 763

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

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

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

  • 写回答

1条回答 默认 最新

  • 清枫若待佳人醉 2019-03-02 14:05
    关注

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

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?