我想從函數返回一個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++中,您應該使用'new'而不是'malloc'來動態分配內存。 – Barmar