首页 > 其他 > 详细

用可变参数列表模拟实现printf函数

时间:2015-11-26 15:33:32      阅读:333      评论:0      收藏:0      [点我收藏+]

用可变参数列表实现printf函数

要实现printf函数,我们首先应该获取printf函数中由双引号中的字符串,若遇到不是%的字符,我们应该直接将其输出,若遇到%,我们应该判断它后面是什么字符,这里先只考虑%c,%s的情况,如果是%c那么我们应该将读到的字符输出来,若为%s,应该将读到的字符串通过指针解引用的方式依次输出,如果是%d%f我们暂且将它当做普通字符输出。

实现的代码如下:

#include<stdlib.h>
#include<stdarg.h>
void my_printf(char *str,...)
{
 va_list arg;
 va_start(arg, str);
 int ch = 0;
 char *pstr = NULL;
 while (*str)
 {
  if (*str == ‘%‘)
  {
   str++;
   switch (*str)
   {
   case ‘c‘:
   {
      ch = va_arg(arg, char);
      putchar(ch);
      break;
   }
   case ‘s‘:
   {
      pstr = va_arg(arg, char*);
      while (*pstr)
      {
       putchar(*pstr);
       pstr++;
      }
      break;
   }
   default:
    putchar(*(str - 1));
    putchar(*str);
   }
   str++;
  }
  else
  {
   putchar(*str);
   str++;
  }
 }
 va_end(arg);
}
int main()
{
 my_printf("%s %c%c%c\n", "hello", ‘b‘, ‘i‘, ‘t‘);
 my_printf("%d%f %c%c %f %s\n", ‘a‘, ‘b‘, "hello");
 system("pause");
 return 0;
}

用可变参数列表模拟实现printf函数

原文:http://haipi.blog.51cto.com/10778780/1717026

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!