首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

while里面的((*dstStr++=*srcStr++) != '\0')解决方案

2012-03-29 
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++;

我想应该更好理解 前面的是优化了的代码。
[解决办法]

探讨

while((*dstStr++ = *srcStr++) != '\0')
是把*srcStr赋值给*dststr后 然后和 '\0'比较如果不等就执行srcStr++;dstStr++;
其实不懂可以这种写
while((*dstStr = *srcStr) != '\0')
{
srcStr++;
dstStr++;

我想应该更好理解 前面的是优化了……

[解决办法]
探讨
应该是用dstStr的值和'\0'比较

[解决办法]
探讨

引用:
应该是用dstStr的值和'\0'比较

可不可能同时比?

[解决办法]
这就是先给dststr这个指针指向的 char形数据赋值,,, 再拿dststr指向的char形数据的值和‘\0’比较阿
[解决办法]




参数不检查,楼主传NULL 进去看看



探讨
实现MyStrcpy()
void MyStrcpy(char *dstStr,const cha *srcStr)
{
while((*dstStr++ = *srcStr++) != '\0')
{
}
}

main()
{
char a[80],b[80];
printf("please enter a string:")
……

[解决办法]
'\0'


探讨
参数不检查,楼主传NULL 进去看看



引用:
实现MyStrcpy()
void MyStrcpy(char *dstStr,const cha *srcStr)
{
while((*dstStr++ = *srcStr++) != '\0')
{
}
}

main()
{
char a[80],b[80];
prin……

[解决办法]
while(*dstStr++ = *srcStr++) 足够

当 srcStr 结尾时 '\0' 的数值就是 0,while(0) 自然就结束了循环
[解决办法]
不要写连自己看不懂的代码。
[解决办法]
里面的while((*dstStr++ = *srcStr++) != '\0')
判断 是否字符串 到了末尾。。。
[解决办法]
参考《C程序设计语言》第二版 K&R 机械工业出版社 2.10 赋值运算符与表达式:

赋值表达式的类型是它的左操作数的类型,其值是赋值操作完成后的值。

热点排行