这个字串符追加会为什么会出错!我是按K&R练习里面写的

#include
#include

void strcat1(char *s, char *t);
int main()
{
char a[] = "bbbbbbbbbb";
char b[] = "1111111111a B";
strcat1(a,b);
printf("%s", a);
}

void strcat1(char *s, char *t)
{

while(*s != '\0')
    s++;

while(*t != '\0'){
*s = *t;
s++;
t++;
}
}


为什么我改里面a[]和b[]的值输入出会不一样呢?就这个代码运行会多出个尾巴 11111a B

 1.不知道楼主使用的哪个版本的编译器,既然还能够成功的运行;你这段代码会出现段错误,char a[] = "bbbbbbbbbb"; 你没有显示的为数组分配空间
 大小,因此编译器会根据后面的字符串大小来计算出其字符串长度,并且将该长度作为字符数组的大小;你想要实现的功能是字符串的连接功能,所以
 前提条件是a(dst目标数组)的空间大小必须要能够足够大,至少要能够容纳下a+b两个字符串的长度大小再+\0大小;很显然你这里条件不满足;
2.解决方法是显示指定数组a的大小,取一个大一些的空间,便可成功完成;