变长参数printf的简单实现

来源:互联网 发布:mysql高效编程 编辑:程序博客网 时间:2024/05/17 02:26

格式化输出函数——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;}

原创粉丝点击