对字符数组的操作问题。

Hopeinwhere001 2010-06-21 11:15:51
#include <iostream>
#include <algorithm>
using namespace std;
void main()
{
char a[]="abcd",b[10];
copy(a,a+4,b);
cout<<b<<endl;
}

输出结果是:abcd烫烫烫烫abcd,为何不是abcd ?
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hj821248113 2010-06-21
  • 打赏
  • 举报
回复
b 没有初始化
brookmill 2010-06-21
  • 打赏
  • 举报
回复
cout操作字符数组的时候,需要以'\0'(也就是0)来判断字符串结束。
b[]没有初始化,vc的debug模式里面会被全部初始化为0xcc,也就是烫烫烫烫
cout输出b的时候,没见到'\0'就会一直输出,而a的内容是紧跟在b后面的,也就被输出了,一直到遇到a[4]的'\0'为止
liutengfeigo 2010-06-21
  • 打赏
  • 举报
回复
这么简单的复制为什么不strcpy
brookmill 2010-06-21
  • 打赏
  • 举报
回复
或者把b初始化为0也可以
char a[]="abcd",b[10] = {0};
brookmill 2010-06-21
  • 打赏
  • 举报
回复
需要一个字符串结束符'\0'
copy(a,a+5,b);
fcly1981826ly 2010-06-21
  • 打赏
  • 举报
回复
学习学习学习

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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