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));
}