功能我有這個功能類似於C++的printf
char* copy(char* pString,...){
char *vToate;
int vLen;
va_list vAp;
va_start(vAp,pString);
vLen+=strlen(pString);
va_end(vAp);
vToate=new char[vLen+1];
va_list vAp1;
va_start(vAp1,pString);
strncpy(vToate,pString,strlen(pString));
va_end(vAp1);
return vToate;
}
,如果我嘗試這個
char *vTest="test";
char *vTmp=copy(vTest," ",vTest);
cout<<vTmp;
結果是 「測試」 而不是 「考試考試」 什麼是錯的?
這是什麼都與'printf'共同點? –
'vLen'的初始化在哪裏?你對未初始化的值使用'operator + ='或者這不是整個代碼? –
你永遠不會調用'va_arg()'遍歷參數列表。你也不會初始化'vLen',所以你最終用'new char []'分配一個未定義數量的內存。我很驚訝這個程序大部分時間不會立即崩潰。 –