ATL编写ActiveX中,使用strcpy会出错?

smans 2003-11-12 04:32:30
char *a[3], *b="sdgsd";
strcpy(a[0] ,b); // error here!
...全文
62 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jEditor 2003-11-13
  • 打赏
  • 举报
回复
这个时候,标准的东西在这里有了不同;
你需要这样:
someCtl()
{
sArry[0] = new char[64];
sArry[1] = new char[64];
sArry[2] = new char[64];
.....
}
跟superS(super慢)说的一样!需要固定内存.你回去试一试!
天限天空 2003-11-12
  • 打赏
  • 举报
回复
你可以先

ATLASSERT(a[0]);
ATLASSERT(b);

strcpy(a[0] ,b);
天限天空 2003-11-12
  • 打赏
  • 举报
回复
提示什么错误?
superS 2003-11-12
  • 打赏
  • 举报
回复
在构造函数里面;
someCtl()
{
sArry[0] = sArry[1] = sArry[2] = "";
}
已经分配和初始化了!

这样也没有分配内存啊。

someCtl()
{
sArry[0] = new char[256];
sArry[1] = new char[256];
sArry[2] = new char[256];
}
xiaohyy 2003-11-12
  • 打赏
  • 举报
回复
使用了c库,project->setting->c/c++中 去掉 _ATL_MIN_CRT
smans 2003-11-12
  • 打赏
  • 举报
回复
上述的a[0] 是sArry[0],笔误!
smans 2003-11-12
  • 打赏
  • 举报
回复
事实上是这样的:
public:
char *sArry[3];

在构造函数里面;
someCtl()
{
sArry[0] = sArry[1] = sArry[2] = "";
}
已经分配和初始化了!
然后在另一个函数中:
STDMETHODIMP someCtl::AddToArry(BSTR bsAdd)
{
.....
strcpy(a[0] ,b); // error here!
}
lasery 2003-11-12
  • 打赏
  • 举报
回复
同意楼上的.
先分配内存
FlyYang 2003-11-12
  • 打赏
  • 举报
回复
你的a没有分配内存

---------
++C++
---------
xiaohyy 2003-11-12
  • 打赏
  • 举报
回复
a[0]未初始化,strcpy(a[0] ,b); 当然出错。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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