您的位置:首页 > 编程语言 > C语言/C++

【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()函数,仅实现了字符和字符串的输出。

代码如下:
#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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: