main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}求结果,劳驾对不起打错了,是while(--pb>=b1)

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 08:23:44
main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}求结果,劳

main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}求结果,劳驾对不起打错了,是while(--pb>=b1)
main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}
求结果,劳驾
对不起打错了,是while(--pb>=b1)

main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}求结果,劳驾对不起打错了,是while(--pb>=b1)
那个while里面是不是写错了,应该是while(--pb)?
那样的话,结果应该是 7. 因为:
那个循环是起误导作用的,执行过程应该是这样的:
循环第一次:把pb指向的内容--“cdefg“拷贝到b2中;
循环第二次:把pb指向的内容--“bcdefg“拷贝到b2中,将第一次b2中拷贝所得的内容覆盖;
.
最后一次,将pb指向的内容--b1拷贝到b2,然后指向strlen.
ps:strcpy b2指向的地址开始拷贝,会覆盖之前的内容,strcpy默认遇到‘\0’停止拷贝.
stren不将‘\0’计算在内.