谁能解释这个程序?

百变猪娃娃 2012-06-17 11:23:01
void lianjie()
{
char s1[100],s2[100];
int i=0,j=0;
printf("输入第一个字符串(不要多于100个字符)\n");
scanf("%s",s1);
printf("输入第二个字符串(不要多于100个字符)\n");
scanf("%s",s2);
while(s1[i]!='\0') i++;
while((s1[i++]=s2[j++])!='\0');
printf("连接后的字符串 %s\n",s1);
getch();
}

这个函数是连接两个字符串的,但是我看不懂!
谁帮我解释下这两个while,要详细点,我理解力差。
在线等啊!
...全文
196 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2012-06-18
  • 打赏
  • 举报
回复

(1)while(s1[i]!='\0') i++;//这个是在s1找到'\0'的位置
(2)while((s1[i++]=s2[j++])!='\0');//在(1)找到了'\0'的位置处,从s2首地址开始,读出数据放到
//s1中,直到s2读出的是'\0',就结束!
//完成连接

赵4老师 2012-06-18
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
洁洁的最爱 2012-06-18
  • 打赏
  • 举报
回复
慢慢体会
Joseph-Growth 2012-06-18
  • 打赏
  • 举报
回复
其实LZ只要知道通过标准输入的字符串的结束标志位是'\0'.就知道这段代码的意思了。
AnYidan 2012-06-18
  • 打赏
  • 举报
回复
while((s1[i++]=s2[j++])!='\0');

中 !='\0' 不要也罢
W170532934 2012-06-18
  • 打赏
  • 举报
回复
这个问题没有那么困难,楼主最好是加断点,依次执行一遍。这样对你学习有帮助
wyfwx 2012-06-18
  • 打赏
  • 举报
回复
while( (s1[i++]=s2[j++]) !='\0');
仔细看看就明白
xingyuebuluo 2012-06-17
  • 打赏
  • 举报
回复
printf 
xingyuebuluo 2012-06-17
  • 打赏
  • 举报
回复
hello
pathuang68 2012-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

第2个while只有循环条件,没有循环体。这样也可以啊?
[/Quote]

可以滴。其实里面已经做了s1[i++]=s2[j++]这样的运算了。
百变猪娃娃 2012-06-17
  • 打赏
  • 举报
回复
第2个while只有循环条件,没有循环体。这样也可以啊?
寂静的风之力 2012-06-17
  • 打赏
  • 举报
回复
如果这么个简单的程序楼主都理解困难的话,楼主可能需要多读几遍教材。
第一个while寻找'\0',找到后第二个while逐字符复制,知道遇到'\0'为止。
VC6的CRT有一个很好的实现供你参考:
STRCAT.C:

char * __cdecl strcat (
char * dst,
const char * src
)
{
char * cp = dst;

while( *cp )
cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}
jackyjkchen 2012-06-17
  • 打赏
  • 举报
回复
第一个while计算s1的长度,字符串是\0结尾的

第二个while从s1的尾部开始连接s2

这是VC的strcat函数的实现,基本一样


char * __cdecl strcat (
char * dst,
const char * src
)
{
char * cp = dst;

while( *cp )
cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧