main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}求结果,劳驾对不起打错了,是while(--pb>=b1)
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/14 17:54:15
![main(){char b1[8]=](/uploads/image/z/8835039-63-9.jpg?t=main%28%29%7Bchar+b1%5B8%5D%3D%22abcdefg%22%2Cb2%5B8%5D%2C%2Apb%3Db1%2B3%3B+while%28--p%3E%3Db1%29strcpy%28b2%2Cpb%29%3Bprintf%28%22%25d%22%2Cstrlen%28b2%29%29%3B%7D%E6%B1%82%E7%BB%93%E6%9E%9C%2C%E5%8A%B3%E9%A9%BE%E5%AF%B9%E4%B8%8D%E8%B5%B7%E6%89%93%E9%94%99%E4%BA%86%2C%E6%98%AFwhile%28--pb%3E%3Db1%29)
x͒_kPƿJ(^(D:W¡.m7&+[n蚊g.%_9&1Hz=Wj GϖB]έ<!ot% )XͯI@.ne'rJ8tg9`S`#syۣ]mְ'bu3@c
ؿ
dStNѹqKU}:j_V:q[;v
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’计算在内.