处理参数个数不定的函数
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中可以用一个函数处理这个情况的。现在对于这两种情况使用了两个不同的函数
----------------解决方案--------------------------------------------------------
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));
}
----------------解决方案--------------------------------------------------------