void printlog(const char * str, ...){
int vint;
char *vstr;
char vch;
char num[10];
char buff[256];
memset(buff, 0, sizeof(buff));
va_list vap;
va_start(vap, str);
//根据str来解析参数
const char *p = str;
const char *lp = str;
while(lp = p, p = strchr(p, '%'))
{
memset(num, 0, sizeof(num));
strncat(buff, lp, p-lp);
p++;
switch (*p) {
case 'd':
vint = va_arg(vap, int);
sprintf(num, "%d", vint); //for simple
strcat(buff, num);
break;
case 's':
vstr = va_arg(vap, char *);
strcat(buff, vstr);
break;
case 'c':
vch = va_arg(vap, char);
sprintf(num, "%c", vch); //for simple
strcat(buff, num);
break;
default :
break;
}
}
va_end(vap);
cout << buff << endl;
}
printf函数的简单模拟实现
最新推荐文章于 2022-01-22 22:04:52 发布