-1

紛らわしい問題に直面しています。文字配列を返す関数があります。それを読み取って出力しようとしましたが、出力はガベージ値のようです

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);
}

私がやっていることは何か間違っていますか?

4

1 に答える 1

3

これ以上の詳細がなければ、私の疑いはget_ssp_IO(....)次のようになります。

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

ただし、関数が戻ると、配列メモリは未定義になります。C ++を使用しているためstd::string、代わりに使用する必要があります。これにより、すべてのメモリ管理の問題から解放されます。

于 2013-03-19T13:00:01.777 に答える