当前位置: 代码迷 >> C语言 >> 处理参数个数不定的函数
  详细解决方案

处理参数个数不定的函数

热度:285   发布时间:2007-11-17 15:34:09.0
处理参数个数不定的函数
void ShowResultf(double a,double b,int num4)
{
for(int i=0;i<num4;i++)
{
printf("%f\t%f\n",a,b) ;
}
}
void ShowResultf(double a,int num4)
{
for(int i=0;i<num4;i++)
{
printf("%f\n",a) ;
}
}
如上面,希望把传入的参数值在屏幕上显示出来,但是事先不知道参数的个数,怎么处理?我记得C中可以用一个函数处理这个情况的。现在对于这两种情况使用了两个不同的函数
搜索更多相关的解决方案: 函数  参数  int  double  void  

----------------解决方案--------------------------------------------------------
C/C++程序员实用大全 上的例子,你看看改了就可以了
入门:
#include <stdio.h>
#include <stdarg.h>
int add_values(int value,...)
{
    va_list argument_ptr;
    int result=0;
    if(value!=0)
    {
        result_=value;
        va_start(argument_ptr,value);
        while((value=va_arg(argument_ptr,int))!=0)
            result+=value;
        va_end(argument_ptr);
    }
    return(result);
}
void main(void)
{
    printf("Sum of 3 is %d\n",add_values(3,0));
    printf("Sum of 3+5+8 is %d\n",add_values(3,5,8,0));
}

高阶:
#include <stdio.h>
#include <stdarg.h>
double add_values(char *str,...)
{
    va_list marker;
    double result=0.0;
    va_start(marker,str);
    while(*str)
    {
        if(*str=='%')
        {
            switch(*(++str))
            {
                case 'd':result+=va_arg(marker,int);break;
                case 'f':result+=va_arg(marker,double);break;
            }
        }
        str++;
    }
    va_end(marker);
    return(result);
}
void main(void)
{
    double result;
    printf("Result %f\n",add_values("%f%d%f%d",1.1,1,2.2,3));
}
----------------解决方案--------------------------------------------------------
  相关解决方案