日期:2014-05-20  浏览次数:20772 次

字符串拼接的问题
今天无聊的时候写个字符串拼接的程序。
结果发现了点问题。
#include<stdio.h>
int main()
{
int i=0;
char a[5],b[5],d[5],c[10],*p;
printf("please input a:");
scanf("%s",a);
strcpy(d,a);
setbuf(stdin,NULL);
printf("please input b:");
scanf("%s",b);
//a[0]=a[-10];这2个注释都可以解决问题,可我不晓得为什么a[0]会被改变了
//p=d;
p=a;
while(i!=5){
c[i]=*(p+i);
i++;
}
p=b;
i=0;
while(i!=5){
c[5+i]=*(p+i);
i++;
}
i=0;
while(i!=10){
printf("%c",c[i]);
i++;
}
return 0;
}
a和b分别输入hello和kitty
gdb的时候发现a[0]被改成\000了,
不解。
求解

------解决方案--------------------
a[-10]是未定义行为,里面的值理论上是随机的..
你都执行了赋值语句a[0]=a[-10];a[0]肯定会改变啊