# C Programming Exercises, Practice, Solution : Variadic Function

## C variadic function [8 Exercises with solution]

[An editor is available at the bottom of the page to write and execute the scripts. Go to the editor]

Variadic functions are functions in C that can accept a varying number of arguments. These functions are declared with an ellipsis (...) in their parameter list, which means that they can take any number of arguments of any type. Variadic functions are typically used in situations where the number of arguments or their types are not known at compile time, but rather determined at run time. Some common examples of variadic functions in C include printf() and scanf().

The <stdarg.h> header file in C provides a set of macros and functions that allow a variadic function to access the variable argument list. Some of the commonly used macros and functions provided by <stdarg.h> are:

• va_list: A type to declare a variable that will hold the variable argument list.
• va_start: A macro that initializes a va_list variable to point to the first argument in the variable argument list.
• va_arg: A macro that retrieves the next argument in the variable argument list with a specified type.
• va_copy: A macro that copies a va_list variable to another one.
• va_end: A macro that cleans up the va_list variable after it has been used.

1. Write a C program to find the sum of a variable number of integers passed as arguments to a function using variadic functions.
Expected Output:

```s1 = 6, s2 = 15, s3 = -6
```

Click me to see the solution

2. Write a C program to find the product of a variable number of integers passed as arguments to a function using variadic functions.
Expected Output:

```s1 = 6, s2 = 15, s3 = -6
```

Click me to see the solution

3. Write a C program to find the maximum and minimum values of a variable number of integers passed as arguments to a function using variadic functions.
Expected Output:

```Maximum value: 9
Minimum value: 0
```

Click me to see the solution

4. Write a C program to concatenate a variable number of strings passed as arguments to a function using variadic functions.
Expected Output:

```Original strings:
String-1: w3resource
String-2: .
String-3: com
Concatenate said strings: w3resource.com
```

Click me to see the solution

5. Write a C program to count the number of characters in a variable number of strings passed as arguments to a function using variadic functions.
Expected Output:

```Original strings:
String-1: w3resource
String-2: .
String-3: com
The total number of characters is 14

```

Click me to see the solution

6. Write a C program to find the average of a variable number of doubles passed as arguments to a function using variadic functions.
Expected Output:

```The average is: 25.350000
```

Click me to see the solution

7. Write a C program to implement the printf() function using variadic functions.
Expected Output:

```The values are: 10 20 30
```

Click me to see the solution

8. Write a C program to sort a variable number of integers passed as arguments to a function using variadic functions.
Expected Output:

```1 3 5 7 9
-2 0 1
```

Click me to see the solution

C Programming Code Editor:

More to Come !

Do not submit any solution of the above exercises at here, if you want to contribute go to the appropriate exercise page.

﻿

## C Programming: Tips of the Day

Setting variable to NULL after free:

Setting unused pointers to NULL is a defensive style, protecting against dangling pointer bugs. If a dangling pointer is accessed after it is freed, you may read or overwrite random memory. If a null pointer is accessed, you get an immediate crash on most systems, telling you right away what the error is.

For local variables, it may be a little bit pointless if it is "obvious" that the pointer isn't accessed anymore after being freed, so this style is more appropriate for member data and global variables. Even for local variables, it may be a good approach if the function continues after the memory is released.

To complete the style, you should also initialize pointers to NULL before they get assigned a true pointer value.

Ref : https://bit.ly/3Awk2aU

We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook