Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209343
  • 博文数量: 136
  • 博客积分: 2919
  • 博客等级: 少校
  • 技术积分: 1299
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-11 09:08
文章分类

全部博文(136)

文章存档

2013年(1)

2011年(135)

我的朋友

分类: C/C++

2011-03-27 11:23:35

  1. /* k&r7.3: Variable-length Argument Lists
  2.    created on Mar 27, 2011
  3.    */

  4. #include "stdio.h"
  5. #include "stdarg.h"

  6. void minprintf(char *fmt, ...);

  7. int main()
  8. {
  9.     char s[] = "mark";
  10.     minprintf("%s\n", s);
  11.     return 0;
  12. }

  13. /* minprintf: minimal printf with variable argument list */
  14. void minprintf(char *fmt, ...)
  15. {
  16.     va_list ap; /* points to each unnamed arg in turn */
  17.     char *p, *sval;
  18.     int ival;
  19.     double dval;

  20.     va_start(ap, fmt); /* make ap point to 1st unnamed arg */
  21.     for (p = fmt; *p; p++) {
  22.         if (*p != '%') {
  23.             putchar(*p);
  24.             continue;
  25.         }
  26.         switch(*++p) {
  27.             case 's':
  28.                 for(sval = va_arg(ap, char *); *sval; sval++)
  29.                  putchar(*sval);
  30.                 break;
  31.             default:
  32.                 putchar(*p);
  33.                 break;
  34.         }
  35.     }
  36.     va_end(ap); /* clean up when done */
  37. }
阅读(422) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~