您的位置:首页 > 其它

printf函数的简单模拟实现

2013-11-23 14:20 218 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: