函数中的字符数组

时间:2013-03-19 12:52:55

标签: c++ arrays

我面临一个令人困惑的问题,我有一个函数返回一个字符数组,我尝试读取并打印出来,但输出似乎是垃圾值

char  *ssl;
ssl = router_con.get_ssp_IO('1',this->no_io_l1);

for(int qq=0;qq<this->no_io_l1;qq++)
{ std::cout<<ssl[qq]<<"\n";
}

get_ssp_IO函数如下

char*  TCP_IP_Connection::get_ssp_IO(char level,int id)
{
int ctr,ss=0;
char sspi[id];
for(int a=0,ctr=0;a<this->len;a++)
  {
if(this->data[a]=='?')
{
    do
    {
        a++;
    }while(this->data[a]!='\n');
}
else if(this->data[a]==' ')
      {
     ctr++;

        if(ctr==3)
       {
            sspi[ss]=this->data[a+1];

            ctr=0;
            ss++;
       }

       }

    }
  return(sspi);
}

我有什么不对劲吗?

1 个答案:

答案 0 :(得分:3)

如果没有进一步的细节,我怀疑get_ssp_IO(....)看起来像这样:

.... get_ssp_IO(....) {
    char ret[some_length];
    ....
    return ret;
}

但是一旦函数返回,数组内存是未定义的。正如您使用的是C ++,您应该使用std::string来代替所有内存管理问题。