字符串拼接的问题

complety 2012-01-09 11:42:56
今天无聊的时候写个字符串拼接的程序。
结果发现了点问题。
#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了,
不解。
求解
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
complety 2012-01-10
  • 打赏
  • 举报
回复
我说的是//里面是解决问题的法子。提供了2种。
那不是个巧合,
5改成6,10改成12,然后a[0]=a[-12]。结果符合。
叶子 2012-01-10
  • 打赏
  • 举报
回复
技术贴跑投诉区来了...
  • 打赏
  • 举报
回复
这贴怎么跑这里来了?
黯然 2012-01-09
  • 打赏
  • 举报
回复
a[-10]是未定义行为,里面的值理论上是随机的..
你都执行了赋值语句a[0]=a[-10];a[0]肯定会改变啊

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧