思路:采用双指针操作,将一个指针指向字符串的末尾后面的‘\0’
另一个指针指向替换之后的’\0’位置然后替换就好的 当两个指针的位置相等的时候也就说明所有的空格替换完毕,并且两个指针同时指向字符串的首地址。
代码:
#include<stdio.h>
#include<string.h>
#define M 100
int main(int argc, const char *argv[])
{
char str[M]={0};
gets(str);
puts(str);
int i=0;
char *p=str;
while(*p!='\0')
{
if(*p==' ')
{
i++;
}
p++;
}
char *q=NULL;
q=p+i*2;
while( p != q )
{
if(*p==' ')
{
*q='0';
*(--q)='2';
*(--q)='%';
}
else
{
*q=*p;
}
q--;
p--;
}
puts(str);
return 0;
}
执行结果: