#include
char replaceblank(char s[]);
char replaceblank(char *s) {
char *ret = s;
char *rett = s;
int oldsize = 0;
int newsize = 0;
while (*ret!= '\0')
{
++oldsize;
if (*ret = ' ') {
newsize += 2;
}
else {
++newsize;
}
ret++;
}
printf("%d\n", oldsize);
printf("%d\n", newsize);
int indexofold = oldsize;
int indexofnew = newsize;
char *r;
rett = s + oldsize - 1;
r = s + newsize - 1;
while (rett!=r)
{
if (*rett == ' ')
{
*r-- = '0';
*r-- = '2';
*r-- = '%';
}
else {
*r--= *rett--;
}
}
return s;
}
void main() {
char s[] = "we are";
printf("%s\n", s);
printf("%s\n", replaceblank(s));
}
上面是我的程序,主要是s,rett,ret这三个指针变量的值,在执行下面这段程序前,值是we re:
while (*ret!= '\0')
{
++oldsize;
if (*ret = ' ') {
newsize += 2;
}
else {
++newsize;
}
ret++;
这个循环执行第一次后,三个值一起变成 e are;
![图片说明](https://img-ask.csdn.net/upload/201708/10/1502372254_610518.png
求解答