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);
----------------解决方案--------------------------------------------------------
题目是要连接两个字符串
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后面
----------------解决方案--------------------------------------------------------
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编辑过]
----------------解决方案--------------------------------------------------------
赋值没有错啊,把S2的赋给S1.
那s1原来的值不是没了?关键是这不懂...
[此贴子已经被作者于2007-10-31 22:35:08编辑过]
----------------解决方案--------------------------------------------------------