#include <iostream>
#include <string>
#include <cstdarg>
using namespace std;
void myerror(const char* p...);
int main()
{
int i = 0;
char *s = "slience";
char c = 's';
myerror("%d %s %c %c %s %d", i, s, c, c, s, i);
cout<<endl;
printf("%d %s %c %c %s %d", i, s, c, c, s, i);
cout<<endl;
system("pause");
return 0;
}
void myerror(const char* p...)
{
va_list ap;
va_start(ap, p);
//string s = "char*";
int i = 0;
while(p[i] != '\0')
{
if(p[i] == '%')
{
if(p[i + 1] == 'd')
{
int num = va_arg(ap, int);
i = i + 2;
cout<<num;
}
else if(p[i + 1] == 's')
{
char* ps = va_arg(ap, char*);
i = i + 2;
cout<<ps;
}
else if(p[i + 1] == 'c')
{
char c = va_arg(ap, char);
i = i + 2;
cout<<c;
}
else if(p[i + 1] == '%')
{
cout<<'%';
}
else
{
cout<<"I cannot understand %"<<p[i + 1];
break;
}
}
else
{
cout<<p[i];
i++;
}
}
va_end(ap);
}