为什么memcpy不能用阿!

moses2000 2004-07-08 10:33:32
我做了一个动态库。有如下代码:
#include "stdafx.h"
#include <string>
#include <iostream>

using namespace std;

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

//王志伟声明并修改维护该部分代码
struct C_ReaderInfo
{
public:
int int_value;
char char_value[255];
double float_value;
BOOL bool_value;
char * string_value;
} readerdata;
extern "C" __declspec(dllexport) int add( struct C_ReaderInfo * readerdata, char * tmpstr)
readerdata)
{
int i;

i=strlen (readerdata->string_value);
memcpy(tmpstr, readerdata->string_value,i+1);
char *buf = "another";

int j = strlen ( buf );
char * chp = readerdata->string_value;
strcpy(readerdata->string_value,buf);

return 0;
}

build都没有错误,但是通过外部程序调用该动态库出错,经过
跟踪,发现是到了strcpy函数这里发生错误
不知道为什么?
请各位高手给看看
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phourm 2004-07-09
  • 打赏
  • 举报
回复
memcpy(tmpstr, readerdata->string_value,i+1);
确定tmpstr 和readerdata->string_value
指针有的效!
gracezhu 2004-07-09
  • 打赏
  • 举报
回复
memcpy(tmpstr, readerdata->string_value,i+1);这句话,readerdata->string_value不能为空,否则会出错,你要作个是否为空的判断
kvls 2004-07-09
  • 打赏
  • 举报
回复
看不出有什么问题,出现什么错误?
大脚板 2004-07-09
  • 打赏
  • 举报
回复
strcpy 必须要先分配空间
如果以 laiyiling(最熟悉的陌生人) 方式做,结果会比较难以预料
Kudeet 2004-07-08
  • 打赏
  • 举报
回复
strcpy是字符串拷贝函数,你的两个参数都是字符指针型的。
你可以直接相互赋值,不要用strcpy函数
readerdata->string_value = buf;
Wenxy1 2004-07-08
  • 打赏
  • 举报
回复
strcpy()不支持Unicode!!!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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