当前位置: 代码迷 >> C语言 >> 解释一下程序哈
  详细解决方案

解释一下程序哈

热度:86   发布时间:2007-10-29 14:54:22.0
解释一下程序哈
题目是要连接两个字符串
char s1[80],s2[40];
int i=0,j=0;
gets(s1);
gets(s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];//这个不懂哦.
s1[i]='\0'; //这个为什么要加上去?
printf("%s",s1);
搜索更多相关的解决方案: 字符串  

----------------解决方案--------------------------------------------------------
以下是引用zzsy04et138在2007-10-29 14:54:22的发言:
题目是要连接两个字符串
char s1[80],s2[40];
int i=0,j=0;
gets(s1);
gets(s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];//这个不懂哦.这个不就是做连接啊,把S2的接到S1后面
s1[i]='\0'; //这个为什么要加上去?//因为是个字符串,所以后面要'\0'结束,要不然用printf("%s",s1);会出错.
printf("%s",s1);


----------------解决方案--------------------------------------------------------
s1[i++]=s2[j++];//这个不懂哦.这个不就是做连接啊,把S2的接到S1后面
这个是连接啊,我还以为是赋值,然后就觉得很奇怪..

----------------解决方案--------------------------------------------------------
我认为这应该是给字符数组s1中的后继元素赋值,而这个赋值语句的作用是把s2接到s1后面
----------------解决方案--------------------------------------------------------

以下是引用zzsy04et138在2007-10-29 15:30:52的发言:
s1[i++]=s2[j++];//这个不懂哦.这个不就是做连接啊,把S2的接到S1后面
这个是连接啊,我还以为是赋值,然后就觉得很奇怪..

赋值没有错啊,把S2的赋给S1.


----------------解决方案--------------------------------------------------------
呵呵,斑竹当然没说错,是提问的小妹妹理解错了
----------------解决方案--------------------------------------------------------

while(s2[j]!='\0')
s1[i++]=s2[j++];//这个不懂哦.这个不就是做连接啊,把S2的接到S1后面

改为while(s2[j]!='\0')
*s1[i++]=*s2[j++];
要考虑s1中剩下的空间能够装下s2中的字符,不然就出现数组出界的问题

'\0'是字符串结束标志,如果没有这个标志的话
你可以试一试打印一个字符串adfdsaf\0dafdas,看\0后面的东西还能不能打出来


----------------解决方案--------------------------------------------------------
                  学习老................
----------------解决方案--------------------------------------------------------
我觉得楼主应该再看一下自增运算符那块。
还有就是C风格字符串都是以'\0'为结束标志的。

[此贴子已经被作者于2007-10-30 16:27:11编辑过]


----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2007-10-29 15:53:19的发言:

赋值没有错啊,把S2的赋给S1.

那s1原来的值不是没了?关键是这不懂...

[此贴子已经被作者于2007-10-31 22:35:08编辑过]


----------------解决方案--------------------------------------------------------