How to use dynamic number of arguments in function in C

2 Answers

0 votes
#include <stdio.h>
#include <stdarg.h> 

int sum(int total_arguments, ... );

int main(int argc, char **argv) 
{
    printf("sum = %d\n", sum(4, 10, 20, 30, 40));
    printf("sum = %d\n", sum(3, 9, 11, 77));
    
    return(0);
}
int sum(int total_arguments, ... )
{
    va_list arguments;                     
    int sum = 0, i;

    va_start (arguments, total_arguments); // Save all values after total_arguments           
    for (i = 0; i < total_arguments; i++)        
        sum += va_arg(arguments, int); 
    va_end(arguments);  // Clear the list

    return sum;                      
}

/*
run:

sum = 100
sum = 97

*/


answered May 18, 2015 by avibootz
0 votes
#include <stdio.h>
#include <stdarg.h>

double sum(int total_arguments, ... );

int main(int argc, char **argv) 
{
    printf("sum = %.2f\n", sum(4, 10.23, 20.87, 30.87, 40.12));
    printf("sum = %.2f\n", sum(3, 9.13, 11.87, 77.99));
    
    return(0);
}
double sum(int total_arguments, ... )
{
    va_list arguments;                     
    double sum = 0;
    int i;

    va_start (arguments, total_arguments); // Save all values after total_arguments           
    for (i = 0; i < total_arguments; i++)        
        sum += va_arg(arguments, double);
    
    va_end(arguments);  // Clear the list

    return sum;                      
}

/*
run:

sum = 102.09
sum = 98.99

*/


answered May 18, 2015 by avibootz
...