while里面的((*dstStr++=*srcStr++) != '\0')解决方案
while里面的((*dstStr++*srcStr++) ! \0)实现MyStrcpy()void MyStrcpy(char *dstStr,const cha *srcSt
while里面的((*dstStr++=*srcStr++) != '\0')
实现MyStrcpy()
void MyStrcpy(char *dstStr,const cha *srcStr)
{
while((*dstStr++ = *srcStr++) != '\0')
{
}
}
main()
{
char a[80],b[80];
printf("please enter a string:")
gets(a);
MyStrcpy(b,a);
printf(b);
puts(b);
}
想问下,
MyStrcpy()
里面的while((*dstStr++ = *srcStr++) != '\0')
{
}
怎么理解,讲srcStr付给dst后,那什么和'\0'比啊,赋值语句有值?
[解决办法]
应该是用dstStr的值和'\0'比较
[解决办法]
while((*dstStr++ = *srcStr++) != '\0')
是把*srcStr赋值给*dststr后 然后和 '\0'比较如果不等就执行srcStr++;dstStr++;
其实不懂可以这种写
while((*dstStr = *srcStr) != '\0')
{
srcStr++;
dstStr++;
}
我想应该更好理解 前面的是优化了的代码。
[解决办法]
[解决办法][解决办法][解决办法]这就是先给dststr这个指针指向的 char形数据赋值,,, 再拿dststr指向的char形数据的值和‘\0’比较阿
[解决办法]参数不检查,楼主传NULL 进去看看
[解决办法]'\0'
[解决办法]while(*dstStr++ = *srcStr++) 足够
当 srcStr 结尾时 '\0' 的数值就是 0,while(0) 自然就结束了循环
[解决办法]不要写连自己看不懂的代码。
[解决办法]里面的while((*dstStr++ = *srcStr++) != '\0')
判断 是否字符串 到了末尾。。。
[解决办法]参考《C程序设计语言》第二版 K&R 机械工业出版社 2.10 赋值运算符与表达式:
赋值表达式的类型是它的左操作数的类型,其值是赋值操作完成后的值。