思路:
从后往前遍历
设置两个指针
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char str[100]="We are happy";//长度可以不断的扩展 不用string
int l=strlen(str);//求字符串长度
int cnt=0;
for(int i=0;i<l;i++){
if(str[i]==' ')
cnt++;//查找有多少个空格
}
char *p1,*p2;
p1=str;//指针指向数组首地址
int i=0;
while(str[i++]!='\0'){
p1++;//定住p1位置
}
p2=p1;
for(i=0;i<cnt*2;i++)
{p2++;//定住p2位置
*p2=' ';
}
cout<<str<<endl;
while(*p1!=*p2){
if(*p1!=' ')
{*p2=*p1;
p1--;
p2--;}
else{
int n=3;
while(n--){
if(n==2)
{
*p2='0';
p2--;
}
if(n==1){
*p2='2';
p2--;
}
if(n==0){
*p2='%';
p2--;
}
}
p1--;//前移一个位置
}
}
cout<<str<<endl;
return 0;
}