char* cDuan[3];
   auto int nDuan[4];
sprintf(tempstr2,"%d\0",8888);
    for(i=0;i<4;i++)
{
     memset(cDuan[i],'0',sizeof(cDuan[i]));
sprintf(cDuan[i],"%s",tempstr2[i]);
nDuan[i]=atoi(cDuan[i]);
}

解决方案 »

  1.   

    运行到memset 时 提示错误.为什么
      

  2.   

    memset(cDuan + i,'0',sizeof(cDuan[i]));
      

  3.   

    sprintf(cDuan[i],"%s",tempstr2[i]);用char是"%c"
      

  4.   

    还有
    memset()
    第一个参数是个指针
    所以cDuan + i
    或者&cDuan[i]
      

  5.   

    char* cDuan[3];
    里面存放的是指针, 你在memset它们之前,你分配了内存了么??
      

  6.   

    楼上的是对地把
    char* cDuan[3];
    看成了
    char cDuan[3];楼主,真抱歉
      

  7.   

    楼主,借你地方,问个相关的问题啊!。。char audiosendbuf[2576];    
    memset(audiosendbuf, 0, 2576);
    这样写,是正确的。char *audiosendbuf=new char[2576];    
    memset(audiosendbuf, 0, INP_BUFFER_SIZE);这样写,编译是报错的。。 应该怎么改?不改定义,因为这个定义改了的话,程序里其他的地方,都得改 :(  
    thanks...
      

  8.   

    char a[100];    
    memset(a,0,sizeof(a));
    //这样写,是正确的。    char* b = new char[100];    
        memset(b,0,100);
    报什莫编译错误啊,我都试了,没错,你把memset中的逗号间隔的空格都去掉试试
      

  9.   

    char* cDuan[3];
       auto int nDuan[4];
    sprintf(tempstr2,"%d\0",8888);
        for(i=0;i<4;i++)
    {
         memset(cDuan[i],'0',sizeof(cDuan[i]));
    sprintf(cDuan[i],"%s",tempstr2[i]);
    nDuan[i]=atoi(cDuan[i]);
    }
    个人认为有两个问题:
    1. 数组访问越界cDuan[3];
    2. cDuan[3]没有分配内存