两个字符串连接,这个c程存错在那里

来源:百度知道 编辑:UC知道 时间:2024/05/26 17:31:32
main()
{
char str1[]={"i am"},str2[]={"a boy"};
int i,j;
for(i=strlen(str1);i<20;i++)
for(j=0;j<20;j++)
str1[i]=str2[j];
printf("%s\n",str1);
}

#include<stdio.h> //预处理命令不要掉
#include<string.h> //strlen()函数位于string.h头文件中
main()
{
char str1[]={"I am"},str2[]={" a boy"};
int i,j;
for(i=strlen(str1),j=0;i<20;i++,j++) /*原来的循环语句有问题,仔细想一下*/
str1[i]=str2[j];
printf("%s\n",str1);
}

输出结果是i am加一串不确实字符吧?
内层循环结束条件是将str2[19]赋给str1[i],所以整个循环结束后str1变成i am加16个str2[19],但str2[19]是不确实的.改成上面哥们说的就行