你想把s2的字符串添加到s1中,那么定义数组的时候s1一定要比说s2大。
错误原因
代码
char str1[40];
char str2[20];
gets(str1);
gets(str2);
int i=0;
for(;str1[i]!='\0';++i)
{
}
for(int j=0;str2[j]!='\0';++j)
{
str1[i]=str2[j];
i++;
}
/*
//int len=strlen(str1);
int len=0;
while(str1[len]!='\0')
{
len++;
}
int j=0;
while(str2[j]!='\0')
{
str1[len]=str2[j];
len++;
j++;
}
*/
printf("%s",str1);
#include <stdio.h>
#include <string.h>
int main()
{
/*
char str1[20] = "bbbbb";
char str2[20] = "aaaaaa";
int i, j = 0;
while(str1[i] != '\0') i++;
while(str2[j] != '\0')
{
str1[i] = str2[j];
i++;
j++;
}
//结果:bbbbbaaaaaa
*/
char str1[20] = "bbbbb";
char str2[20] = "aaaaaa";
int i, j = 0;
for(i = 0; str1[i] != '\0'; i++);
for(j = 0; str2[j] != '\0'; j++, i++) str1[i] = str2[j];
str1[i] = '\0';
printf("%s\n", str1);
//结果:bbbbbaaaaaa
return 0;
}
在长度不越界的情况下,两种结果是一样的,你两种情况不一样,有可能是长度越界了,可以用申请堆区的方法,这样就不怕了,不过代码多一点
个人理解,如有错误,欢迎指正。