不明白这段程序,谁给讲讲,谢谢

/* 将程序空间的字符串复制到内部RAM中,返回字符串长度 */ UINT8 mCopyCodeStringToIRAM( UINT8 idata *iDestination, UINT8 code *iSource ) { UINT8 i = 0; while ( *iDestination = *iSource ) { iDestination ++; iSource ++; i ++; } return( i ); } mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/TEST.TXT" );

那个while循环能跳出来吗,*iDestination = *iSource是把程序空间的字符串复制到内部RAM中,怎么判断的出字符串结束了呢?不明白,谁来给咱讲讲,谢谢。

C语言问题, while( *iDestination = *iSource ) 这句话实际上是先把 *iSource的值赋给 *iDestination,然后判断*iDestination是否为0,而字符串结束应该知道是以'\0',即十六进制0结束的,所以就会判断出结果 与if(i == 1)写成if(i = 1)后会导致条件永远为真一样。 不过不建议平常这样写,这算是一种玩C语言技巧。下面的写法是一样的,执行效率也基本上无区别,只是看起来不简洁,但容易看得懂。 while(1) { *iDestination = *iSource; if(*iDestination == '\0') break; iDestination ++; iSource ++; i ++; }


谢谢拉,呵呵[Emot]2[/Emot] 都忘记了字符串后面的“\0”啦


只有登录才能回复,可以选择微信账号登录