??????????????????printf??????????????????????????о????????????????????????????????о??о?????????????ú???????C????????????????

void function(const char *format?? ...);

??????????????function??????????C?????????????????????

va_list
va_start
va_arg
va_end

????C?????????????????????Щ??

void va_start( va_list arg_ptr?? prev_param );
type va_arg( va_list arg_ptr?? type );
void va_end( va_list arg_ptr ); 

????va_list???????????va_start??va_arg??va_end?????????????????????????????б??е??????????????va_list????????????

???????壺typedef char *  va_list??

????va_start????????????б??е????????????????????va_list?????????????????????va_arg??va_end????

????va_arg?????????????????????????б??????б????????????????????????ε???va_arg??????????va_list?????????????????????????б??е????????????

????va_end???ú?????????????????б??ú?va_start???????????????????

????va????????variable-argument?????????????????

??????Щ??????stdarg.h?У?????????????????????e????????????

#include <cstdarg>
#include <cstdio>
#include <iostream>
using namespace std;

void Output(char *szFormat?? ...)
{
 va_list argptr;
 char szBuf[1024];
 va_start(argptr?? szFormat);
 vsprintf_s(szBuf??szFormat?? argptr);
 cout<<szBuf<<endl;
 va_end(argptr);
}

//output the args
int ArgsCount(char *szFormat?? ...)
{
 va_list argptr;
 int argNomber = 0;
 char *szBuf;

 va_start(argptr??szFormat);
 while (1)
 {
  szBuf = va_arg(argptr??char*);
  if(strcmp(szBuf??"0") == 0)
   break;
  cout<<"the parameter #"<<argNomber<<" is "<<szBuf<<endl;
  argNomber++;
 }
 va_end(argptr);
 return argNomber;
}

int main()
{
 char czA[] = "wql";
 char czB[] = "hello";
 Output("Who are you? i am %s?? %s"??czA??czB);
 ArgsCount("Hello"?? "Who"??"are"??"you"??"i am"??"wql"?? "0");
 return 0;
}

????1??????????????????va_list??????????????arg_ptr??????? ???????????????

????2???????va_start??????????arg_ptr??????????????????? ????????????????????????????????????

????3???????va_arg???????????????????????j.va_arg????????????????????????????????????int???

????4??????va_end??????????????????????????????????????????????????????ж??????????????ε???va_arg?? ???????????