??????????????????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?? ???????????
???????????????????????漰???????????????????SPASVOС??(021-61079698-8054)?????????????????????????