【c语言】实现可变参数列表
2015-05-12 12:19
274 查看
C语言中时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:
int printf( const char* format, ...);
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),即···可以写任意参数,该函数有一个参数,其后占位符…,表示后面参数的个数不定.,但第一个参数是必须的,同时在这里要用到函数库里的三个函数:
va_start
,va_arg,
va_end
它们是在stdarg.h中被定义成宏的。
在这里实现一个my—pintf()函数,仅实现了字符和字符串的输出。
代码如下:
int printf( const char* format, ...);
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),即···可以写任意参数,该函数有一个参数,其后占位符…,表示后面参数的个数不定.,但第一个参数是必须的,同时在这里要用到函数库里的三个函数:
va_start
,va_arg,
va_end
它们是在stdarg.h中被定义成宏的。
在这里实现一个my—pintf()函数,仅实现了字符和字符串的输出。
代码如下:
#include<stdio.h> #include <stdarg.h> void my_printf(char *fmt,...)//fmt是可变函数参数列表里必须有的参数 { va_list arg; va_start(arg,fmt); while (*fmt != '\0') { switch (*fmt) { case 'c': { char c = va_arg(arg, char); putchar(c); break; } case 's': { char *p = va_arg(arg, char *); fputs(p, stdout); break; } default: { putchar(*fmt); break; } } fmt++; } va_end(arg); } int main() { my_printf("c\ns\n",'a',"hello"); return 0; }
相关文章推荐
- [C语言]可变参数列表和简单模拟实现printf
- [C语言]利用stdarg.h来实现可变参数列表
- C语言可变参数列表详述及实现printf函数
- C语言可变长参数列表原理与实现
- 【C语言】printf函数的简单实现(可变参数列表)
- C语言中可变参数列表解析
- 可变参数列表详解(内附求平均数和实现简单的printf)
- C语言可变参数函数实现原理
- C使用 stdarg 宏来实现函数的可变参数列表
- 用C语言实现参数个数可变的函数【转自中国程序员网】
- C语言中的可变参数列表使用详解(转)
- 创建函数利用可变参数列表的形式模拟实现printf的功能
- C语言中可变参数函数实现原理
- C语言中可变参数函数实现原理
- 详解C语言可变参数va_list和vsnprintf及printf实现
- 用可变参数列表模拟实现printf函数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- c语言可变参数原理以及printf函数的自实现
- 转:C语言可变参数实现
- 实现c语言中的可变参数函数