将 char* 复制到 char*

2024-01-04

这是我的代码的一部分:

extern "C" REGISTRATION_API int extreme(char* lKey)
{
string s1; 
char *p=NULL;
try
{
    ifstream myfile ("extreme.txt");
    int i=0;
    if (myfile.is_open())
    {
    while (getline(myfile,s1))
       {
        switch (i)
         {
        case 1:
         strcpy(p,s1.c_str());
         lKey=p;
        break;
             //continue here
         }
      }
   }
}

现在,当我从外部应用程序调用此函数时,出现此错误:

访问冲突异常:
尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

问题是这样的:

lKey=p;

我怎样才能分配lKey to p?


您需要预先分配传递给的内存strcpy。 IE。 Ap = new char[s1.length()+1];会做到这一点(+1 表示终止 0 字符)。然而,混合起来并不是一个好主意std::string和 C 字符串例程没有充分的理由。更好地坚持std::string,这将为您省去很多麻烦。

Also lKey=p也不起作用——它只是复制本地地址p到局部变量中lKey。呼叫者甚至不会看到任何差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 char* 复制到 char* 的相关文章

随机推荐