C语言动态参数

来源:互联网 发布:re管理器修改mac 编辑:程序博客网 时间:2024/05/17 08:14
/* * dynamic_para.c * *  Created on: 2012-10-10 *      Author: zhaomeng * 动态参数: * 在标准头文件<stdarg.h>中包含一组宏定义,它们对如何遍历 * 参数列表进行了定义。 * * va_list类型用于声明一个变量,该变量将一次引用个参数。定义变量ap * * va_list ap; * * 宏va_start将ap初始化为指向第一个无名参数的指针 * 在使用ap之前,该宏必须被调用一次。 * * 参数表至少包括一个有名参数,va_start将最后一个有名参数作为起点 * * 每次调用va_arg,该函数都将返回一个参数,并将ap指向下一个参数。 * va_arg使用一个类型名来决定返回的对象类型,指针移动的步长。 * * 最后必须在函数返回前调用va_end,以完成必要的清理工作 * */#include <stdio.h>//在<stdio.h>头文件中已经包含了<stdarg.h>,这里为了突出说明这个头文件#include <stdarg.h>void minprin(char * fmt,...){va_list ap;char * p,*sval;int ival;double dval;va_start(ap,fmt);for(p = fmt;*p;p ++){if(*p != '%'){putchar(*p);continue;}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(){minprin("this is my printf %d ,is cool %f and what you say %s",2,2.4,"Year");return 0;}


原创粉丝点击