读书人

提问!该怎么解决

发布时间: 2013-12-02 12:00:40 作者: rapoo

提问!
#include<stdio.h>
void main()
{
int i=0,j=0;
char s1[80],s2[40];
printf("string1:");
gets(s1);
printf("\nstring2:");
gets(s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("The new string:%s\\n",s1);
}


意思是把两字符串连接起来,在i++之后,i应该等于'\0'了吧,然后怎么是把j++放入i++呢,不是替换'\0'后面一个字符了吗,而不是替换'\0',请帮帮忙,很不理解
[解决办法]

引用:
你们的意思是s1[i++]=s2[j++];是先将j放入i,然后再将j++放入i++,是吗,感觉看起来很不习惯啊

警告:一句话内最好不要出现两个以上++,禁止是同名的变量++出现2次以上。不然都是未定义行为,以上的解释都会产生问题。仅当当前情况下,上面的情况是正确的。
建议:分开写,s1[i]=s2[j];i++;j++;
关于未定义行为,看置顶贴:http://bbs.csdn.net/topics/370153775

读书人网 >C语言

热点推荐