天天看点

Printf()函数简单实现

/************************************************************************/

/* coder:huifeng00                                                 

/* 时间:2010-5-23

/* 功能:简单实现自己的printf()函数,识别%d,%s,%c

/************************************************************************/

#include <stdio.h>

#include <stdlib.h>

#include <stdarg.h>



void myprintf(const char *format, ...)

{

 va_list ap;

 char c,nc;

 

 va_start(ap, format);

 while (c = *format++) 

 {

  if (c == '%'&&(nc=*format)!='/0')

  {

   format++;

      switch(nc) 

   {

         case 'c': //%c

       {

       /*为了内存对齐,所以要写int*/

           char ch = va_arg(ap, int);

           putchar(ch);

           break;

      }

         case 's': //%s

       {

          char *p = va_arg(ap, char *);

          fputs(p, stdout);

          break;

      }

      case 'd'://%d

       {

                      int data = va_arg(ap,int);

       char buf[16];

       itoa(data,buf,10);

       fputs(buf,stdout);

       break;

       }

         default:

         putchar('%');

         putchar(nc);

   }

  }

  else

  {

   putchar(c);

  }

 }

 va_end(ap);

}



int main(void)

{

 int i = 100;

 char ch ='n';

 char data[] = "nihao";

 myprintf("%d/n%c/n%s/n", i,ch, data);

 return 0;

}



主要实现了%s,%d,%c。

      

继续阅读