mx_try
2017-08-10 13:37
采纳率: 100%
浏览 840
已采纳

三个指针的值为什么变了?

#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
    求解答
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • das白 2017-08-11 01:52
    最佳回答

    if (*ret = ' ')
    你这里给它赋值成空了
    改成 ==

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题