C 2.05 函数库stgarg.h
2018-06-17 08:23:04    40    0    0
admin

用于在参数个数未知时获得函数的参数

基本介绍

va_list: 定义好的typedef,可以用来声明变量类型,用于以下三个宏。意义可以理解为指向各个参数的指针
void va_start(va_list ap, last_arg):初始化va_list 的变量,lastarg是最后一个固定参数,即省略号之前的数。
type va_arg(va_list ap, type):用某种类型来返回下一个参数,类型不对会导致错误。
void va_end(va_list ap):做一些收尾工作。


例子

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. void myprint(char *format,...)
  4. {
  5. va_list ap;
  6. char *p;
  7. va_start(ap,format); //第二个参数是最后一个定义好的参数
  8. for(p=format;*p;p++)
  9. {
  10. if (*p != '%') //模仿printf,认百分号
  11. {
  12. putchar(*p);
  13. continue;
  14. }
  15. switch(*++p)
  16. {
  17. case 'd':
  18. {
  19. int tmp_int = va_arg(ap,int);
  20. printf("int=%d",tmp_int);
  21. break;
  22. }
  23. case 's':
  24. {
  25. char *tmp_char;
  26. printf("char=");
  27. for(tmp_char = va_arg(ap,char *);*tmp_char;tmp_char++)
  28. putchar(*tmp_char);
  29. break;
  30. }
  31. default:
  32. putchar(*p);
  33. break;
  34. }
  35. }
  36. }
  37. main()
  38. {
  39. int a = 0;
  40. char *b = "123";
  41. myprint("%d,%s",a,b);
  42. }

上一篇: C 2.04 函数库stdlib.h

下一篇: C 2.06 函数库sys/stat.h

文档导航