関数からC文字列を返そうとしています。この関数は3つの整数をコンマで連結し、結果をchar配列として返しますが、ガベージ値が得られます。私はmallocを正しく呼び出さないと仮定しています。誰かが何が問題なのかアドバイスできますか?mallocを使用して関数からC文字列を返す方法
using namespace std;
const char * createCommand(int p1, int p2, int p3){
stringstream sstm;
std::string comma = ",";
sstm << p1 << comma << p2 << comma << p3;
std::string str = sstm.str();
const char *cstr = (const char *)malloc((str.length()+1) * sizeof (char));
cstr = str.c_str();
return cstr;
}
int main() {
const char *cstr2 = createCommand(1,0,250); //I want to return "1,0,250"
printf("char = %s\n",cstr2);
}
あなたはここでかなり漏れています。 –
C文字列を返す特別な理由はありますか?非常に良い理由がない限り、C++でこのようなコードを書くことは間違いありません。 – Xirema
C++では、メモリを動的に割り当てるために 'malloc'ではなく' new'を使うべきです。 – Barmar