此题为简单题,较为好理解,主要是将' '替换'%20',刚开始自己以为可以自己当读取到字符串为空时就可直接置换为‘%20’但发现结果是只能显示‘%20’的部分。错误结果如下:
1 char* replaceSpace(char* s){ 2 int n=strlen(s); 3 int i; 4 // char *p=(char *)calloc(3*(n+3),sizeof(char)); 5 // int size=0; 6 for(i=0;i<n;i++) 7 { 8 if(s[i]==' ') 9 { 10 s[i]='%20'; 11 // p[size++]='%'; 12 // p[size++]='2'; 13 // p[size++]='0'; 14 } 15 16 // else 17 // { 18 // p[size++]=s[i]; 19 // } 20 } 21 return s; 22 }
后来参考了别人的代码后发现其实字符数组好像只能存储一个字符。
因此对其进行了修改。重新申请一个动态内存大小为3*(n+3).。
1 char* replaceSpace(char* s){ 2 int n=strlen(s); 3 int i; 4 char *p=(char *)calloc(3*(n+3),sizeof(char)); 5 int size=0; 6 for(i=0;i<n;i++) 7 { 8 if(s[i]==' ') 9 { 10 // s[i]='%20'; 11 p[size++]='%'; 12 p[size++]='2'; 13 p[size++]='0'; 14 } 15 16 else 17 { 18 p[size++]=s[i]; 19 } 20 } 21 return p; 22 }
结果为: