void myprintf(const char *format,...) { va_list argptr;//參數列表 va_start(argptr, format); size_t ACTSIZE = _vscprintf(format, argptr);//內容長度,根據它給size賦值 char*buffer = (char*)malloc(ACTSIZE + 1);//分配內存空間 memset(buffer, 0, ACTSIZE + 1);//賦初值 vsnprintf(buffer, ACTSIZE + 1, format, argptr);//將值加進去 va_end(argptr); printf("%s\r\n", buffer); free(buffer);//釋放內存 buffer = nullptr; } int main() { myprintf("%s,%s","123","456"); char s1tr[2000]; for(int i =0;i<2000;i++) s1tr[i]='a'; s1tr[1999]=NULL; myprintf("111 %s",s1tr); return 0; }