把字符串中的空格替换为"%20"

        这个需要注意的是字符串的结尾最后一个字符为'\0',并不是空字符,复制时要一块复制,算法思想就是先计算出字符串中总的空格数,然后

重新计算字符串的长度,由于"%20"为3个字符,比原来多2个,所以,字符串长度是原来字符串长度加上空格字符总数×2,就是新的字符串的长度。

 

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cstdlib>
using namespace std;
 
void  strReplace(char str[],int length)
  {
          if(str==NULL||length<0)
             exit(-1);
           int blank=0;
           int nLength;
          for(int i=0;i<length;i++)
             {
                  
             if(str[i]==' ')
                blank++;
             }
            nLength=length+blank*2;
          for(int j=length;j>=0;j--)
             {
                 if(str[j]!=' ')
                   {
                      str[nLength]=str[j];
                        nLength--;
                   }
                  else
                   {
                       str[nLength--]='0';
                       str[nLength--]='2';
                       str[nLength--]='%';
                   }
                
                      
             }
               
            
  }
 int main()
{
     char str[13]="we are happy";
     int length=13;
     cout<<"before replace:  ";
     cout<<str<<endl;
     strReplace(str,13);
     cout<<"after replace:  ";
     cout<<str<<endl;
     return 0;
      
}

 运行结果:

posted @   xshang  阅读(3179)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示