格式化输出函数——printf(char *format,arg,arg1)
格式化字符创包含两种类型的对象:普通字符和转换说明。在输出是,普通字符将原样不懂的复制到输出流中,而转黄说明并不直接输出到输出流中,而是用于printf中参数的转换和打印
#include<stdarg.h> //宏定义
#include<stdio.h>
void minprintf(char *format, ...)
{
va_list ap;
char *p, *sval;
int ival;
double dval;
va_start(ap, format); //将ap指向第一个无名参数
for( p = format; *p; p++)
{
if (*p != '%')
{
putchar(*p);
continue;
}
else {
switch(*++p){
case 'd':
{
ival = va_arg(ap, int);
printf("%d", ival);
break;
}
case 'f':
{
dval = va_arg(ap,double);
printf("%f",dval);
break;
}
case 's':
{
for(sval = va_arg(ap, char *); *sval; sval++)
{
putchar(*sval);
}
break;
}
default :{
putchar(*p);
break;
}
}
}
}
va_end(ap); //结束是清理工作
}
int main()
{
char *s = "Hello World!\n";
int a = 10;
minprintf("%s%d\n",s,a);
return 0;
}