下面的代码,pInput是一个字char数组,里面有"12345678",执行完如下代码后,szDataIn没有值,请教各位大侠,我是哪里错了?char *szDataIn = new char[9];
char *szDataOut = new char[9];
memset(szDataIn,0,9);
memset(szDataOut,0,9);

strncpy(szDataIn,pInput,9);

解决方案 »

  1.   

    1)检查一下pInput里面是否真的有值?
    2)strncpy(szDataIn,pInput,9);
    先用strcpy试一下
      

  2.   

    使用 memcpy(szDataIn,pInput,9);
      

  3.   

    pInput在调试时能看到有"12345678",执行完strncpy后szDataIn没反应,真是郁闷!
      

  4.   

    有没有人帮帮我,pInput是函数的参数
    xtern "C" _declspec(dllexport) int PASCAL bfEncrypt(char *pInput,char *pOutput,int iSize)
      

  5.   

    在我的机器上搞了一下好像没什么问题啊.
    估计要有问题就是出在pInput的赋值\边界上
      

  6.   

    我的观点与楼上的差不多啊,那个pInput是函数的参数,传入一下8字节长的符串
      

  7.   

    显然是memleak问题,看其他的操作是否冲掉了pInput的值,单步跟踪一下阿,很容易找到。
      

  8.   

    我跟踪过了,在strncpy(szDataIn,pInput,8);前,pInput的值“12345678”,szDataIn的值为空,在执行这个复制后,两个变量都没有变
      

  9.   


    这样试试:
    for (int i = 0; i < 9; i++)
    {
        szDataIn[i] = pInput[i];
    }
      

  10.   

    在 strncpy 函数前加上一句:MessageBox(pInput);
      

  11.   

    楼上的大侠,我试过你提的for语句,不知道怎么回事,那个i总是一个随机值,根本不是0;所以循环总是不执行
      

  12.   

    有没有哪位遇到调试都不灵的情况:char *szDataIn = new char[9];
    char *szDataOut = new char[9];
    memset(szDataIn,0,9); //如果把这一行注释掉,那么在执行完下一条语句后,是szDataIn中的内容被清空
    memset(szDataOut,0,9);
      

  13.   

    楼主,我按照你的代码试了一遍,发现szDataIn有“12345678”,并没有发生你说的问题。
    很抱歉,没法帮你了。
    不过如果你还是不行的话,可以试试这样
    char szDataIn[9];
    strncpy((char *)szDataIn,pInput,9);
    这样的好处是你不用专门去释放szDataIn了。
      

  14.   

    你得这个问题也太诡异了吧builde->clean从新编译看看r