题目:将字符数组里的空格替换为%20
替换的前提条件是,这个数组必须有额外的空间
在编写代码时候要注意,数组越界的情况;例如变量一定要初始化,否则这个变量作为数组下标会造成越界
void replaceSpace(char *str,int length) {
if(str==NULL)
return ;
int count=0;
int leng=0;
int i=0;
char *arr=str;
//注:不能用原来的传进来的数组指针进行遍历,一旦遍历这个指针就指向的不是原数组了(我曾经的坑)
while(*arr!='\0')
{
if(*arr==' ')
count++;
leng++;
arr++;
}
int newlen= leng+2*count;
int len=leng;
while(len<newlen&&len>=0)
{
if(str[len]==' ')
{
str[newlen--]='0';
str[newlen--]='2';
str[newlen--]='%';
}
else
{
str[newlen]=str[len];
newlen--;
}
len--;
}
}
int main()
{
char arr[30]="hello world";
int count=0;
replaceSpace(arr,20) ;
printf("%s\n",arr);
return 0;
}
第二种直接用下标访问
void replaceSpace(char *str,int length) {
if(str==NULL||length<=0)
return ;
int count=0;
int i=0;
while(str[i]!='\0')
{
if(str[i]==' ')
count++;
i++;
}
int newlen=length+2*count-1;//注:这里指的是下标
int len=length-1;
while(len<newlen&&len>=0)
{
if(str[len]==' ')
{
str[newlen--]='0';
str[newlen--]='2';
str[newlen--]='%';
}
else
{
str[newlen]=str[len];
newlen--;
}
len--;
}
}