简单模拟实现printf函数

模拟实现printf("hello %s%c %d\n","worl", 'd', 1234);
void PutInt(int num)//整型变量转化为字符输出函数
{if (num > 9){PutInt(num / 10);//递归实现}putchar(num % 10 + '0');}
int my_printf(const char* format,...)
{assert(format);va_list arg;//含义为定义char *argva_start(arg, format);//可变参数的初始化const char* start = format;while (*start != '\0')//终止条件{if (*start == '%')//遇到%说明可能即将遇到输出变量{start++;switch (*start)//辨别变量类型{case 'c'://字符{char c = va_arg(arg, char);putchar(c);break; }case 'd'://整型{int data = va_arg(arg, int);PutInt(data);break;}case 's'://字符串{//这里不用puts是因为puts后面会自动加\nchar *s = va_arg(arg, char*);while (*s){putchar(*s);s++;}break;}   default:break;}}else//如果不是按照原样输出{putchar(*start);}start++;}va_end(arg);return 0;
}void test()
{my_printf("hello %s%c %d\n","worl", 'd', 1234);
}
int main()
{test();system("pause");return 0;
}