printf实现可变参数代码如下:
void myPrintf(char *format, ...)
{
int ret;
va_list argv;
va_start(argv, format);
while (*format != '\0'){
switch (*format)
{
case '%':
if (*(format + 1) == 'c'){
ret = va_arg(argv, char);
putchar(ret);
format++;
}
else if (*(format + 1) == 'd')
{
ret = va_arg(argv, int);
printd(ret);
format++;
}
else if(*(format + 1) == 's')
{
char *p = va_arg(argv, char*);
if (*p != '\0'){
putchar(*p);
p++;
}
format++;
}
else
{
putchar('%');
}
break;
default:
putchar(*format);
break;
}
format++;
}
va_end(argv);
}