C语言问题求教

goooooooooooogle 2012-02-23 11:30:57

void str_cat()
{
char string[48];
memset(string,0,sizeof(string));
char string1[12] = "Hi!";
char string2[12] = "Xiaoming,";
char string3[12] = "Good morning!";

strcat(string, string1);
strcat(string, string2);
strcat(string, string3);

printf("%s \n", string);
}


打印结果为啥是:Hi!Xiaoming,Good morningXiaoming,
而不是:Hi!Xiaoming,Good morning!
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyunqi 2012-02-23
  • 打赏
  • 举报
回复
char string2[12] = "Xiaoming,";
char string3[12] = "Good morning!";
这两个数组长度不够,改为:
char string2[18] = "Xiaoming,";
char string3[18] = "Good morning!";
测试通过,输出结果为:
Hi!Xiaoming,Good morning!
Isnis-fallen 2012-02-23
  • 打赏
  • 举报
回复
除了string3溢出, 不会出现显示错误Hi!Xiaoming,Good morningXiaoming,
程序员小迷 2012-02-23
  • 打赏
  • 举报
回复
gcc4.2直接报错
justkk 2012-02-23
  • 打赏
  • 举报
回复
嗯,string3的空间不足
编译器没有告警?
程序员小迷 2012-02-23
  • 打赏
  • 举报
回复
string2在string3地址的高处,正好会接着string2打印
程序员小迷 2012-02-23
  • 打赏
  • 举报
回复
char string3[12] = "Good morning!";
越界
Jim_King_2000 2012-02-23
  • 打赏
  • 举报
回复
char string3[12] = "Good morning!";
貌似12个字符不够啊。让编译器自动决定有多少个字符比较好。
char string3[] = "Good morning!";

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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