字符串指针 输出问题 为什么puts(pB)那一行输出空白???

int main(){
char strA[50] = "Hello";
char strB[50];

char *pA;
char *pB;

puts(strA);
pA = strA;
puts(pA);
printf("\n");

pB = strB;

while(*pA != '\0')
*pB++ = *pA++;

*pB = '\0';
puts(pB);
puts(strB);

return 0;
}

输出如下:
Hello
Hello
(空行)
(空行) <--为什么这一行会是空白?pB指向strB了为什么不是Hello呢?
Hello

3个回答

自己调试一下堆栈不就知道了,最后换行之前都是无限的

这一行并不是没有输出,而是输出了‘\0’看不见而已。
你在while操作中自己已经改变了pB指针的指向(你的后自增操作),最终pB指向了‘\0’==>*pB = '\0';
最后自然就看不见输出内容了。

pB地址还是那个位置,=“\0”的时候第一个字母被改成‘\0’,所以不能输出后面的了。

     int i;
        for ( i=0 ; *pA != '\0'; i++)
            *pB++ = *pA++;
        *pB+i='\0'

这样的方法可以!+i就不是初始的了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问