c程序 请大家帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/06/28 01:49:11
#include <stdio.h>
#include <string.h>
void main()
{void str_catenate(char a[],char b[]);
char str1[20],str2[10];
gets(str1);
gets(str2);
printf("%s,%s\n",str1,str2);
str_catenate(str1,str2);
printf("%s",str1);
getch();
}

void str_catenate(char a[20],char b[10])
{int i,n;
n=strlen(a);
for(i=0;i<=strlen(b);i++) /*为什么加上=号就正常?*/
a[i+n]=b[i];
}
我觉得应该用i<strlen(b)才对,因为它是从i=0开始的。但是运行不正确~出现乱码!
改成i<=strlen(b)就可以运行了,但我想不明白。请高手指点下

最后一个是结束符'\0'这个东东,没有的话,就是不正常结束,就会是一个不确定的值(乱码)

strlen(b)是b的长度,不算最后的结束符,在你循环的时候把b的字符追加到a中,如果没有最后的一个结束符,就相当于a没有结束,自然也就错了。