带有可变参数表的简化的printf函数

好程序员训练营

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>

------我的c语言笔记,期待与您交流! 


#include<stdio.h>

#include<stdarg.h>


/*minprintf函数:带有可变参数表的简化的printf函数*/

void minprintf(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()

{   

    int aa=2;

    float bb=3.0;

    char *pp="abcd";

    minprintf("%d\n%f\n%s\n",aa,bb,pp);

    return 0;

}


你可能感兴趣的:(C语言,可变参数,底层)