将字符串的空格变成20%-c语言


一,思路详解

  字符串若干个连续地址的字符组成,是一个常量带有只读属性,可以访问但是不能改写,但是字符数组可以改写,字符数组连起来就是一个字符串。malloc只能用于指针,数组在定义的时候就已经分配好空间,无法动态分配空间。指针与malloc的配合能达到和数组一样的效果,缺点就是无法像数组一样随心所欲遍历各个元素.

 二,代码实现

#include
#include
#include
char* replaceSpace(char* s)
{
 int len=strlen(s);   // 求到字符串的长度
    char *string=(char *)malloc(sizeof(char)*len*3+1);  //扩容新的字符串,为以前的三倍
    char *p1=s;   //s可以访问,但不可以改写,所以我们用p1来替代s
    char *p2=string;  //扩容后的数组赋值给p2
    while(*p1!='\0')
    {
        if(*p1!=' ')  //进行判断
        {
            *p2=*p1;  // *p1可以访问字符串常量的字符
            p2++;
            p1++;      // 访问下一个字符
        }
        else
        {
            p1++;
            *p2='%';p2++;
            *p2='2';p2++;
            *p2='0';p2++;
        }
       
    }
    *p2='\0';
    return string;
 
}

int main()
{
 char *s="we are family";
 char* str=replaceSpace(s);
     printf("%s",str);
 return 0;
}