关于一个程序的疑问?

ddoeddoe 2009-06-16 03:20:13
#include <stdio.h>


int main(int argc, char* argv[])

{
char str1[] = "Hello,world";
char str2[] = "";
int i = 0;

while(str1[i] != '\0')
{
str2[i]=str1[i];
i++;
}

printf("The str1 is %s.\n",str1);
printf("The str2 is %s.\n",str2);



return 0;
}


本意是把str1的内容拷贝到str2中,但是输出的结果是:

str1 变成 "o,worldorld"
str2 变成 "Hello,worldorld"

是什么原因哪?
...全文
22 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nosxcy 2009-06-16
  • 打赏
  • 举报
回复
在初始时候str2[] 要明确指定大小
Treazy 2009-06-16
  • 打赏
  • 举报
回复
数组溢出破坏了栈
pengzhixi 2009-06-16
  • 打赏
  • 举报
回复
你str2都没给出长度,你这样肯定越界访问了.
liao05050075 2009-06-16
  • 打赏
  • 举报
回复
因为你没有给str2定空间。所以str1和str2的空间重合了,你改了str2的时候,把str1也给改了
char str2[] = ""; -> char str2[20] = "";即可
goodname 2009-06-16
  • 打赏
  • 举报
回复
str2应该明确定义一个长度,这个长度至少应该能够放下str1
char str2[20] = "";

69,374

社区成员

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

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