为什么会报错?
问题:编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。
char* replaceSpaces(char* S, int length){
int count=0;
for(int i=0;i<length;i++)
{
if(S[i]==' ')
count++;
}
if(count==0)
return S;
int newlength=length+count*2;
S[newlength--] = '\0';
for(int i=newlength-1;i>=0;i--)
{
if(S[i]==' ')
{
S[newlength--]='0';
S[newlength--]='2';
S[newlength--]='%';
}
else
{
S[newlength]=S[i];
newlength--;
}
}
return S;
}
第十三行改一下:newlength 改为 length
for(int i=length-1;i>=0;i--) {
// 原来的内容不变
}
char *replaceSpaces(char *S, int length)
{
char *t = "%20";
char *tmp = (char *)malloc(length);
int len;
for (int i = 0; S[i]; i++)
{
if (S[i] == ' ')
{
len = length - i + 1;
memcpy(tmp, &S[i + 1], len);
memcpy(&S[i], t, 3);
memcpy(&S[i + 3], tmp, len);
length += 2;
}
}
return S;
}