功能我有这个功能类似于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 []'分配一个未定义数量的内存。我很惊讶这个程序大部分时间不会立即崩溃。 –